[原创]X86C++反汇编01.IDA和提取签名
https://bpsend.net/thread-415-1-1.html
用VC6.0新建一个控制台工程
编译成 debug 和 Release 2个版本
应ida分别查看2种版本的程序
高版本ida 可能会直接定位到函数入口,正常情况下,我们需要先调试找到关键,找到关键以后点再通过调试设置api断点,读写断点等,找到程序的关键点,我们再来逆向,很少有把函数从main函数开始从头逆向到尾的,通常是卡一处关键点,看一出关键功能,看关键功能怎么处理的, 因此需要先调试在用ida打开
ida 可以通过快捷键 G 输入地址点回车,跳到该地址, 按 ESC 键 可以退回原来的地址
找函数入口
必须是低版本的adi,高版本会自动帮你找到
用vs2019 建一个控制台程序
Release
点击第二个jmp 然后往下找,找到 3 个push 在一起,下面是个call 的,说明那个call就是到main函数,双击改call即可找到main函数
Debug
右键选择代码视图
debug那么是2个call,第二个call就类似与Release 版的jmp
双击过去后往下找
找mian 函数主要要卡关键点
一般exit 上面就是main函数
exit上2个call 就是main函数
还有1种方法就是找分支结构,分支结构结束就是
3个push
快捷键 n 可以对函数名重新命名
IDA的使用
- IDA对Debug版本和Release版本可执行文件有所区别,一般Debug可执行可以识别符号,Release版本则识别不了。
- .idb文件:IDA生成的文件,里面存储了注释等信息
- IDA分析后有自己的一套命名规则,如下:
- 子程序 sub_地址
- 标号:loc_标号
- 局部变量:
- sub:子程序
- loc