Unix/Linux
文章平均质量分 52
someonea
路人客燕北,无人知其名。
展开
-
尽量不要使用文本模式
尽量不要使用文本模式读取文件 当我们使用C的库函数读取文件时,会有文本模式和二进制模式两种读取模式。一些传输数据的协议比如TFTP、FTP也有文本和二进制模式的区分。既可以使用文本模式也可以使用二进制模式时,尽量使用二进制模式。 文本模式和二进制模式读取文件时,差别主要是在回车换行的处理上,不同系统对回车换行的处理不一致。 CR: Carri原创 2008-03-09 21:36:00 · 1636 阅读 · 0 评论 -
使用lua编写Wireshark(Ethereal)的dissector插件
使用lua编写Wireshark(Ethereal)的dissector插件 dissector插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。dissector插件一般用C来实现,具体如何实现可以参考Wireshark代码目录下面的/epan/dissectors中的源代码和plugins目录下面的源代码。 一些简单的对性能要求不高的dissect原创 2008-04-27 22:30:00 · 3881 阅读 · 0 评论 -
GDB中查看STL容器中数据的方法
GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。这个链接dbinit_stl_views是Dan C Marinescu写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdbinit中,就可以方便的查看STL容器了。它提供了查看vector,list,map,multimap,set,multis原创 2008-09-25 08:30:00 · 5123 阅读 · 1 评论 -
用objcopy把调试信息放到单独的文件中
用objcopy把调试信息放到单独的文件中 Visual C++默认把调试信息放到与可执行程序同名的pdb文件中(较新版本的VC),而GCC默认把调试信息放到可执行文件中。调试信息与程序分离有不少好处,一是可以大大较少可执行程序的大小,二是增加了逆向工程的难度。 GDB 允许将调试信息从可执行程序中分离出来,放在单独的文件中,GDB自动查找并加载调试信息。如果可执行程序的调试信息被原创 2008-11-01 20:12:00 · 4637 阅读 · 0 评论 -
GDB scripts for FreeBSD kernel debugging
由于WinDbg目标平台只是Windows内核,WinDbg有很多Windows内核相关的调试命令,非常有用。相比之下,由于GDB并不针对特定的平台,GDB缺少具体操作系统内核相关的调试命令,很多时候不得不自己编写脚本来扩展GDB,实现一些特定平台上的调试命令。John Baldwin 编写了一些有用的FreeBSD内核调试的GDB脚本,在调试内核时非常有用,下载地址在http://p转载 2009-08-09 14:41:00 · 1217 阅读 · 0 评论 -
关于代码优化
Optimizing == important. But often: Readable code == more important Learn what your compiler does,Then let the compiler do it. If you do an optimization, test it on real world data.If原创 2010-03-13 16:30:00 · 708 阅读 · 0 评论 -
本地透明代理的实现
本地透明代理的实现 Windows下实现本地透明代理可以通过一个过滤驱动和代理进程实现。 过滤驱动Attach到“//Device//Tcp”和"//Device//Udp",然后在Dispatch函数中修改 连接的目的地址并保存原始目的地址和源地址。 上层的代理进程在accept到连接时,向过滤驱动查询连接的原始目的地址, 然后向原始目的地址发起连接。 Linux下面使用netfilter(iptables)可以很容易的实现一个TCP透明代理, 使用iptables的REDIRECT选项无需编写内核模块原创 2010-09-05 19:56:00 · 8014 阅读 · 2 评论