手動脫殼ASProtect 1.23beta21之Aspack2.12的主程式and暗樁分析
標 題:手動脫殼ASProtect 1.23beta21之Aspack2.12的主程式and暗樁分析
發信人:David
時 間:2004-2-01 週日, 下午3:04
詳細資訊:
【脫文作者】 weiyi75[Dfcg](感謝jeffzhang[Dfcg]技術指點)
【作者郵箱】 weiyi75@sohu.com
【作者主頁】 Dfcg官方大本營
【使用工具】 Ollydbg1.09d,Imprec1.42,LoadPe
【破解平臺】 Win2000/XP
【軟體名稱】 Aspack2.12主程式
【下載地址】 http://www.aspack.com/files/aspack212.zip
【軟體簡介】
ASPack is an advanced Win32 executable file compressor, capable of reducing the file size of 32-bit Windows programs by as much as 70%. (ASPack compression ratio improves upon the industry-standard zip file format by as much as 10-20%.) ASPack makes Windows 95/98/NT programs and libraries smaller, and decrease load times across networks, and download times from the internet; it also protects programs against reverse engineering by non-professional hackers. Programs compressed with ASPack are self-contained and run exactly as before, with no runtime performance penalties.
【軟體大小】 293k
【加殼方式】 ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov
【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:)
--------------------------------------------------------------------------------
【破解內容】
前言,關於這個軟體用SDK緊密結合殼,使脫殼檔案不能直接執行。Fpx原來寫出一篇節點修復文章,這裡Jeffzhang兄提示有另外辦法修復,我學會後覺的對初學者有用,故釋出此文。Jeffzhang真是脫殼高手,吾望塵莫及。
好,脫殼開始。
這個版本的Asprotect對Nt偵錯程式不檢測,Softice嚴格校驗。OD異常設定不忽略記憶體異常,其餘全部忽略,載入程式。
00401000 > 68 01804600 PUSH ASPack.00468001 停在這裡,F9執行。
00401005 E8 01000000 CALL ASPack.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C 3B92 7724E04E CMP EDX,DWORD PTR DS:[EDX+4EE02477]
00401012 04 84 ADD AL,84
00401014 3D 62110889 CMP EAX,89081162
00401019 1905 9080A438 SBB DWORD PTR DS:[38A48090],EAX
0040101F 45 INC EBP
00401020 E1 09 LOOPDE SHORT ASPack.0040102B
......................................................................
記憶體異常。
009E0739 3100 XOR DWORD PTR DS:[EAX],EAX
009E073B EB 01 JMP SHORT 009E073E
009E073D 68 648F0500 PUSH 58F64
009E0742 0000 ADD BYTE PTR DS:[EAX],AL
009E0744 00EB ADD BL,CH
009E0746 02E8 ADD CH,AL
009E0748 0158 68 ADD DWORD PTR DS:[EAX+68],EBX
009E074B F8 CLC
009E074C ^ E2 9D LOOPD SHORT 009E06EB
......................................................................
繼續Shift+F9 32次忽略異常到最後一次異常處。
009E00E1 3100 XOR DWORD PTR DS:[EAX],EAX 最後一次異常。
009E00E3 64:8F05 0000000>POP DWORD PTR FS:[0] // 在此處下斷,Shift+F9中斷到這句,然後清除斷點
009E00EA 58 POP EAX
009E00EB 833D DC399E00 0>CMP DWORD PTR DS:[9E39DC],0
009E00F2 74 14 JE SHORT 009E0108
009E00F4 6A 0C PUSH 0C
009E00F6 B9 DC399E00 MOV ECX,9E39DC
009E00FB 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
009E00FE BA 04000000 MOV EDX,4
009E0103 E8 94C3FFFF CALL 009DC49C
009E0108 FF75 FC PUSH DWORD PTR SS:[EBP-4]
009E010B FF75 F8 PUSH DWORD PTR SS:[EBP-8]
009E010E 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
009E0111 8338 00 CMP DWORD PTR DS:[EAX],0
009E0114 74 02 JE SHORT 009E0118
009E0116 FF30 PUSH DWORD PTR DS:[EAX]
009E0118 FF75 F0 PUSH DWORD PTR SS:[EBP-10]
009E011B FF65 EC JMP DWORD PTR SS:[EBP-14] 這裡就跳走了。
009E011E 5F POP EDI
009E011F 5E POP ESI
009E0120 5B POP EBX
009E0121 8BE5 MOV ESP,EBP
009E0123 5D POP EBP
009E0124 C3 RETN 注意這裡不能下斷點啊,不同於Asprotect1.23rc4
......................................................................
接著按ALT+M開啟記憶體映象。在第一個塊上下記憶體訪問斷點。
記憶體映象
R R
00400000 00001000 ASPack PE header Imag R RWE
00401000 00042000 ASPack code Imag R RWE //在此處上下記憶體
訪問斷點
......................................................................
按F9執行,程式就會中斷在OEP處了。
0044289C 55 PUSH EBP //中斷在這裡,現在就可以DUMP了。
0044289D 8BEC MOV EBP,ESP
0044289F 83C4 F4 ADD ESP,-0C
004428A2 E8 4D0BFCFF CALL ASPack.004033F4
004428A7 E8 0C21FCFF CALL ASPack.004049B8
004428AC E8 6354FCFF CALL ASPack.00407D14
004428B1 E8 D6C6FCFF CALL ASPack.0040EF8C
接著用Import REC 填入oep 4289C ,iat自動搜尋-獲得輸入資訊-顯示無效的,右鍵先用追蹤層次1修復大部分指標,剩下8個指標用Asprotect1.2X外掛修復。
執行修復後的程式出錯,當然不可能這麼簡單了。所以接下來的工作就是尋找出錯的位置然後修復。用OD載入修復後的程式,來到這裡。
00442901 |. E8 D210FEFF CALL Dump_.004239D8
00442906 |. BA 38294400 MOV EDX,Dump_.00442938
0044290B |. A1 30564400 MOV EAX,DWORD PTR DS:[445630]
00442910 |. E8 DF0DFEFF CALL Dump_.004236F4
00442915 FF15 0C494400 CALL DWORD PTR DS:[44490C] //這裡出錯,資訊框提示 DS:[0044490C]
=0098C9A0,這裡是呼叫殼中的程式碼,殼被脫了,當然出錯,所以要知道它究竟是呼叫什麼內容,只能跟蹤未脫殼的程式相應位置。
用OD重新載入未脫殼的程式,重複上敘步驟。直到OEP處停下。
00442915 FF15 0C494400 CALL DWORD PTR DS:[44490C] //按F4來到這裡,接著F7跟入
0098C9A0 833D A8359900 0>CMP DWORD PTR DS:[9935A8],0 //來到這裡
0098C9A7 74 06 JE SHORT 0098C9AF
0098C9A9 FF15 A8359900 CALL DWORD PTR DS:[9935A8] //DS:[009935A8]=004427A8,呼叫004427A8處的程式碼 ; ASPack.004427A8
0098C9AF C3 RETN
看到這裡大家應該都知道該怎樣修復了吧。在轉儲視窗,Ctrl+G來到0044490C
0044490C A0 C9 98 00 //原先值
0044490C A8 27 44 00 //修改值
儲存為Unpack1.exe,試執行,確定一個錯誤提示,英文介面,還不能加殼程式。
繼續查詢出錯的位置
0043F1B8 FF15 04494400 CALL DWORD PTR DS:[444904] //這裡出錯,DS:[00444904]=0098C8F4,又是呼叫殼中的程式碼
同理跟蹤未脫殼的程式來到此處
0043F1B8 FF15 04494400 CALL DWORD PTR DS:[444904] //F7進入
0098C8F4 C3 RETN //來到這裡。返回到 0043F1BE
暈,裡面就是一個RETN,這個也好辦,隨便找一個RETN讓它返回吧。可以用Ctrl+F查詢RETN,我選用的是
00401234處的,隨便哪個RETN都行。
同樣來到轉儲視窗,Ctrl+G來到00444904
00444904 F4 C8 98 00 //原先值
00444904 34 12 40 00 //修改值
繼續查詢出錯的位置
0043F246 FF15 08494400 CALL DWORD PTR DS:[444908] //DS:[00444908]=0098C8F4 這裡也是呼叫殼中的程式碼
同樣跟蹤未脫殼的程式來到此處
0043F246 FF15 08494400 CALL DWORD PTR DS:[444908] //F7進入
0098C8F4 C3 RETN //來到這裡。
這裡和上面修改一樣。
00444908 F4 C8 98 00 //原先值
00444908 34 12 40 00 //修改值
到這裡就是徹底結束了,可以正常執行了。
【破解總結】
在轉儲視窗中修改
00444904 F4 C8 98 00 //原先值
00444904 34 12 40 00 //修改值
00444908 F4 C8 98 00 //原先值
00444908 34 12 40 00 //修改值
0044490C A0 C9 98 00 //原先值
0044490C A8 27 44 00 //修改值
相關文章
- ASProtect 1.23 SDK之 Aspack2.12r 主程式脫殼去暗樁2015-11-15
- 手動脫ASProtect 的殼-Synchromagic
v3.5 build 5572003-08-03UI
- VideoSplitter V2.31 脫殼去暗樁+完美爆破2015-11-15IDE
- 手動脫掉Asprotect的殼,(給初學者的) (9千字)2002-01-24
- SoftDefender主程式脫殼2015-11-15
- FTPrint的脫殼(asprotect) (2千字)2001-02-05FTP
- 流放一文。 對Asprotect v1.1的手動脫殼的一點分析 (9千字)2000-10-27
- 脫殼----對用Petite2.2加殼的程式進行手動脫殼的一點分析
(5千字)2000-07-27
- 明月幾時有――ASProtect
V1.31 build 06.14主程式 脫殼2004-10-01UI
- ASF-AVI-RM-WMV Repair V1.41 脫殼去暗樁+漢化完美爆破2015-11-15AI
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- International CueClub主程式脫殼(Softwrap殼)2004-09-12
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- Armadillo 3.6主程式脫殼2015-11-15
- ASProtect
1.23RC4 以殼解殼+暗樁修復+解除自校驗+破解――ArtCursors V3.99B32004-06-16
- 脫ASPack2.12加殼的DLL檔案簡便方法2004-12-18
- ASPROtect 1.22加殼的ahaview2.0脫殼 (5千字)2002-03-24View
- ASProtect V1.2脫殼――Asterisk Password
Recovery XP2015-11-15AST
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- 用Ollydbg快速手脫Krypton 0.5加殼程式――Krypton主程式
等2015-11-15
- 小甜餅 --- 有關新版Asprotect加殼程式的脫殼的又一種思路
(798字)2000-09-10
- 怎樣脫用 Aspack2.12 加的殼(適合初學者)2015-11-15
- 對Asprotect脫殼的一點總結
(20千字)2000-08-12
- 易語言3.5很暗的暗樁分析:)2015-11-15
- Asprotect保護的程式脫殼後的修正--DialogBoxIndirectParamA
(7千字)2001-09-09
- Asprotect 1.2x 加殼的 Advanced Direct
Remailer 2.17 脫殼 (3千字)2002-06-20REMAI
- “天音怒放”手動脫殼及破解2015-11-15
- 對Crunch v1.1加殼程式的手動脫殼及反跟蹤程式碼的一點分析
(15千字)2000-10-02
- ASProtect 1.23RC4之System Cleaner
4.91d脫殼修復and破解2015-11-15
- 用OD對Aspr加殼程式的手動脫殼及修復 (7千字)2015-11-15
- EncryptPE
2003.5.18 主程式脫殼2004-06-19
- ASProtect 1.23
b18脫殼淺談 (5千字)2015-11-15
- 用Arm3.75加殼的cc
版+iat亂序主程式的脫殼 (1)2004-10-02
- 先分析,再脫殼(一)2003-09-04
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- 關於用ASProtect v1.3加殼軟體的脫殼方法體會 (5千字)2001-11-21
- 手動脫殼的教程(由petite v2.2加殼) (4千字)2001-11-26