一、普及
What?殼
所謂“殼”就是專門壓縮的工具。
② 我這是一個商業的程序,是用來賺錢的,怎么可以被別人破解呢,那我就是加密保護殼(Safengine、VMprotect、winlicense、Themida)保護程序不被非法修改和反編譯。
③ 其他(病毒、木馬加殼,Anti-AntiVirus)
DO?
脫殼
就是把保護殼去掉更好的調試和破解能清楚看到代碼
OEP
程序的入口點如果我們找到OEP我們就能快速脫殼就類似於找到鑰匙就能開門
殼就是一把鎖OEP就是鎖孔
IAT
IAT就是指針脫殼的話可能要修復指針如果沒有指針就相當於人只有一個身體沒有靈魂
殼可能會對指針進行處理,修復輸入表就是修復IAT
段首和段尾
段首,是上一段的結尾也是下一段的開頭一段是以retn開始和retn結尾。我們經常聽到在段首下斷,所以我們要找的就是retn下面第一個push ,段首是以push開始滴,所以我們不會在retn那里下段而段尾我們是在retn處下斷,因為軟件的子程序是以retn返回到某一地方所以返回的時候要在retn出下斷。
ESP定律的原理就是“堆棧平衡”原理。
1、在命令行下斷hresp-4(此時的ESP就是OD載入后當前顯示的值)
2、hrESP(關鍵標志下一行代碼所指示的ESP值(單步通過))
CALL
1.向堆棧中壓入下一行程序的地址; 2.JMP到call的子程序地址處。
RETN
與call對應的就是RETN了。對於RETN我們可以這樣來理解: 1.將當前的ESP中指向的地址出棧; 2.JMP到這個地址。
工具:
①、peid
②、OD
③、DetectItEasy
④、LordPE
⑤、ImportREC
☆ esp定律
1.F8,觀察OD右上角寄存器中ESP有沒有實現(紅色)
2.命令行下 DD ******(當前代碼ESP值),回車
3.DD就選中下端地址,斷點—硬件訪問—DWORD斷點,F9運行,到跳轉處按F8 到OEP
1、PEID先看程序的殼
![]()
2、ASPACK的殼子屬於壓縮殼的一種
![]()
3、用DetectItEasy V1.0看一下編譯器為Delphi
看一下delphi的oep
![]()
4、之后,載入od
![]()
5、選擇是否都可以的
![]()
這是帶殼的.
6、f8單步往下走
![]()
7\ESP和EIP都變成紅色(實現)的時候,在ESP上右鍵下ESP斷點
![]()
8、下完斷點,F9運行程序
![]()
9、之后F8單步往下走,一直走
![]()
10、到達OEP,右鍵-用OD脫殼調試進程
![]()
11、復制紅框里面的oep,(9C25C)之后關閉這個框,OD最小化
12、打開loadpe
![]()
13、選擇剛剛的程序進程--修復鏡像大小-完全轉存
![]()
14、轉存后打開會出現這樣的結果
![]()
15、然后再用ImportREC修復
![]()
16、點選剛剛的進程
17、把之前復制的OEP放到1里面,按序號依次點擊
![]()
18、修正轉儲剛剛導出的那個
![]()
19、脫殼完成...
之后放到原目錄下運行即可
三、內存鏡像法
內存鏡像法找oep
1.OD載入軟件
2.點選項—調試選項—忽略全部—CTRL+F2重載
3.ALT+N打開內存鏡像,找程序第一個.rsrc—F2下斷—SHIFT+F9運行到斷點,再打開找到程序第一個.rsrc上面的.code處(就是00401000處),F2下斷—SHIFT+F9或無異常按F9,到OEP
1、載入DO之后,alt+m
![]()
2、在程序的資源處下內存訪問斷點
3、返回程序按F9運行程序,也可以用快捷鍵SHIFT+F9運行程序
界面是這個樣子的
4、ALT+M返回,在代碼段下內存訪問斷點
5、SHIFT+F9運行程序
6、直接到達OEP,按照之前的方法脫殼就可以了
7、用OD自帶的插件即可脫殼
1.OD載入,不分析代碼。
2.近CALL—F7,遠CALL—F8,實現向下的跳轉。
3.有回跳處,下一句代碼處—F4 (右鍵—代碼斷點運行到所選)
最后一次異常
1.OD打開—點選項—調試選項—去掉所有異常—CTRL+F2重載.
2.SHIFT+F9.只到程序運行,記下次數M
3.CTRL+F2重載—按SHIFT+F9(次數為M-1次)
4.按CTRL+G—輸入OE右下角的SE句柄前的地址.
5.F2下斷—SHIFT+F9到斷點處.
6.去斷按F8,到OEP.
OEP大全
![]() ![]()
常用脫殼工具:
1、文件分析工具(偵測殼的類型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件編輯工具PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid
總結:
1、介紹了什么是壓縮殼,什么是加密殼
2、脫殼原理
3、脫殼常用的工具
4、4種脫殼方法及修復
5、各種語言OEP特征
6、壓縮殼這幾種方法幾乎夠用了,如果出現冷門殼,用這些方法脫不掉,可以用之間說的打補丁的方法。
現在壓縮殼都有很多自動脫殼機,但是加密殼呢?學習手工脫殼不是為了單純去學怎么脫這一種殼,學習的是技巧,以后遇到其他的沒有脫殼機的殼要嘗試手工去脫,就像一個網站注入點,你可以用sqlmap去注入,如果有waf呢?Sqlmap腳本繞不過去呢?不還得靠手工去試,工具是死的,人是活的.
|