32. 脱壳篇-简单带壳的程序、反调试带壳的程序(堆栈平衡原理找OEP、代码段设置断点)
第一個程序?
OEP為46B6F9?
PE頭位置為46B000到46D000區間,have a nice day! 就是殼
一定要點上箭頭指向處,dump改名
清除區段 ,刪除殼,保存
?
第二個程序(市面上60%-80%)根據堆棧平衡原理尋找OEP
F8后到下圖位置,但并不是OEP
因為地址與PE差別大,殼偽造了我們的text,rdata,data
開始尋找OEP
觀察ESP值是否變化,如果發現變化我們就開始行動
第一次變化
右鍵
F9,停靠在硬件斷點處,大部分jmp eax就是OEP,但是強殼不是
回到了程序的代碼段
F8進入OEP
右鍵
刪除殼
?
LordPE編輯,修改代碼基址,數據基址保存
RebuildPE
?
第三個程序
應用堆棧平衡法找到OEP,這里的代碼段、數據段、輸入表和殼在同一個區間
所以必須要重建輸入表
因為重建了輸入表,所以Sections會多一行,就是重建輸入表
刪除ex_cod,這里的代碼段、數據段、輸入表和殼在同一個區間,在保存前最好有一個備份,刪錯了可以重新來過
RebuildPE,OK
?
第四個程序
MEW,免費的殼,壓縮殼
一步到位
F8
?
第五個程序(代碼段上斷點法)
NoNamePacker殼
F9運行,此程序帶有反調試系統
F8單步運行
或者查找IsDebuggerPresent,Alt+F9
je -> jmp
代碼段設置斷點
斷點停下來了,注釋也看到了401000的地址
但是這不是我們要的位置,所以我們返回M界面,繼續代碼段下斷點F2,跳轉后還不是就再繼續下斷點等待循環匹配成功
也可以選擇”設置內存訪問斷點“,這樣可以按F9循環,不用再打斷點
ctrl+F8快速自動循環,查看循環再搞什么,F12暫停
循環后下斷點,F9跳出循環,再在代碼段下斷點,F9,大量經驗告訴我就樣是最快的方法
Prt可以刪除,注意要保留備份,要不然失敗會很麻煩
總結
以上是生活随笔為你收集整理的32. 脱壳篇-简单带壳的程序、反调试带壳的程序(堆栈平衡原理找OEP、代码段设置断点)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go语言编程—Go语言实现文件拷贝
- 下一篇: 6. OD-去除收费软件次数限制,去除退