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?