一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流.
参考书籍《IAD PRO权威指南》
工具:
PETools:
ETools 是另一款很好的PE文件编辑工具,以前曾发过 v1.5.400.2003 的汉化版,今天也来更新一下:)。PEditor 功能有转存进程、检测可执行文件加壳类型、在SoftICE中插入中断、编辑PE文件的导入表、节表、重建校验和、重建程序等,其自带了一个签名管理程序可自己添加更多的壳类型来让 PETools 识别。PETools 可支持插件,并带有插件编写示例,你也可以自己开发需要的插件
PEiD:
查壳工具,能检测大多数编译语言.、病毒和加密的壳,它主要利用查特征串搜索来完成识别工作的,各种开发语言都有固定的启动代码部分,利用这点可识别是何种语言编译的,被加壳程序处理过的程序,在壳里会留下相关加壳软件的信息,利用这点就可识别是保种壳所加密的,它提供了一个扩展接口文件userdb.txt ,用启可以自定义一些特征码,这样可以识别出新的文件类型,签名的制作可以用插件Add Signature来完成
命令:
nm : 查看文件中的符号,
例如sqlmap中提供的udf提权so文件,可以查看的到一些全局函数和局部函数,以及一些引用和为引用的变量等。
nm(选项)(参数)
options:
-A:每个符号前显示文件名; -D:显示动态符号; -g:仅显示外部符号; -r:反序显示符号表。
显示结果说明:
U,未定义符号,通常为外部引用
T,在文本部分定义的符号,通常为函数名称
t,在文本部分定义的局部符号,在C程序中,这个符号同等于一个静态函数
D,已初始化的数据值
C,未初始化的数据值
详情可以查看 man nm
ldd:
ldd是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系.
网上已经有很多详细的,就不在此累赘了。详细可查看 man ldd
objdump:
objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,功能十分想打,
推荐阅读:http://blog.csdn.net/beyondioi/article/details/7796414
strings:
提取二进制中的字符串