模擬跟蹤+修復方法之ACProtect脫殼――完美解除安裝XP V9.12
模擬跟蹤+修復方法之ACProtect脫殼――完美解除安裝XP V9.12
下載頁面: http://www.skycn.com/soft/6169.html
軟體大小: 4316 KB
軟體語言: 簡體中文
軟體類別: 國產軟體 / 共享版 / 解除安裝清除
應用平臺: Win9x/NT/2000/XP
加入時間: 2003-11-06
下載次數: 332693
推薦等級: ****
【軟體簡介】:軟體共有3個小程式,分別是:磁碟垃圾清理軟體、軟體安裝監視器、軟體解除安裝工具,是一套功能比較強大的安裝/解除安裝/清理工具,新版更加全面的系統監視,讓軟體安裝的一舉一動歷歷在目,二次清理技術,軟體解除安裝後將不留任何垃圾,磁碟垃圾清理的數量更多,軟體執行更加穩定。
【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【除錯環境】:WinXP、flyODBG、PEiD、LordPE、ImportREC 1.4.2+、WinHex
―――――――――――――――――――――――――――――――――
【脫殼過程】:
先說幾句多餘的話:請正確認識加密與解密(僅指技術研究)的關係――矛與盾――解密的發展無疑是促進了加密的進步!就偶個人以及偶所知道的朋友來說,學習CRACK只是個人興趣,不為稻梁謀!否則也不會寫破解筆記。
崇尚自由、共享! :-)
1、偶使用的偵錯程式:Ollydbg Anti ACProtect For XP 修改版 ―― flyODBG
下載頁面:http://tongtian.net/pediybbs/viewtopic.php?t=1532
2、反跟蹤可以參考:夢幻Ollydbg ―― 淺談 ACProtect V1.09 Pro 的反跟蹤And脫殼
相關頁面:http://tongtian.net/pediybbs/viewtopic.php?t=1525
用 Run Trace 方法來脫殼,可以讓偶們節省一些脫殼中F7單步走的時間,難點是在何處使用模擬跟蹤以及如何設定較佳的跟蹤條件;這些只有根據具體的情況具體分析了。
ACProtect運用了變形技術,使得許多程式碼在脫殼後丟失。為了找到修復方法,偶曾經對 jingulong 兄說過偶準備3天3夜來分析,後來偶用了1天的時間終於成功。
這次的試煉品是:完美解除安裝XP V9.12的NetClean.exe 昨天升級為 V9.13 了,偶寫這篇V9.12脫殼筆記,作者不會太在意吧?筆記所寫只是偶的一點ACProtect脫殼思路,ACProtect是一款優秀的殼,以後碰到的機率不會少的。
―――――――――――――――――――――――――――――――――
一、模擬跟蹤 尋找OEP
用IsDebug 1.4外掛去掉flyODBG的偵錯程式標誌。設定 忽略 除了“記憶體訪問異常”之外的所有其他異常選項。
004AE000 60 pushad//進入OD後斷在這!
004AE001 79 05 jns short NetClean.004AE008
F9執行,程式中斷在異常處,這個int 1異常算是ACProtect的典型異常啦 :-D
004B3E96 CD 01 int 1//ACProtect的典型異常
004B3E98 40 inc eax//此處下斷,SHIFT+F9斷在這!CTRL+F9執行到返回!
004B3E99 40 inc eax
004B3E9A 0BC0 or eax,eax
004B3E9C 0F85 B6000000 jnz NetClean.004B3F58
…… ……省 略…… ……
004B3F99 61 popad
004B3F9A 61 popad
004B3F9B C3 retn//返回到 004B7CC2
――――――――――――――――――――――――
004B7CC2 F9 stc
004B7CC3 E9 04000000 jmp NetClean.004B7CCC
004B7CCC 83ED 01 sub ebp,1
004B7CCF 0F85 41FFFFFF jnz NetClean.004B7C16//F4下去
004B7CD5 EB 01 jmp short NetClean.004B7CD8
004B7CD8 E8 BDB3FFFF call NetClean.004B309A//F8帶過
004B7CDD E9 0B000000 jmp NetClean.004B7CED
OK,偶現在開始使用模擬跟蹤!下命令:TC EIP<004B0000 當然,可以一步步F7走,也有更簡便的方法,偶這裡只是學習一下Run Trace方法。如果你有大把的時間,等數小時後程式會自動暫停在OEP處的。要想快點則需要手動干預一下!有2點需要注意:
1、jnz等的向上迴圈手動F4下去跳出迴圈
2、CALL的地址比程式當前地址低的可以F8帶過,不需要TC進入
當TC時間稍長時,可以檢視 執行跟蹤 找出上面所說的情況,手動干預一下,使模擬跟蹤加快速度!
004B88FA E8 43D6FFFF call NetClean.004B5F42//CALL入低地址段
004B88FF E9 03000000 jmp NetClean.004B8907//F2下斷,暫停執行跟蹤,F9斷在這
繼續 TC EIP<004B0000 如果嫌記錄太長,可以 清除記錄 後再TC
004B9D46 E8 F7C1FFFF call NetClean.004B5F42
004B9D4B D3C8 ror eax,cl//F2下斷,暫停執行跟蹤,F9斷在這
繼續 TC EIP<004B0000
檢視 執行跟蹤 發現程式在 004B9DA5 處迴圈太多,偶們手動來協助它吧
004B9DA5 0F85 1CFFFFFF jnz NetClean.004B9CC7//F2下斷,斷下後取消斷點,F4下去
004B9DAB 7E 03 jle short NetClean.004B9DB0
以下處理方法相同:
004BBEEC E8 51A0FFFF call NetClean.004B5F42
004BBEF1 75 01 jnz short NetClean.004BBEF4//F2下斷,暫停執行跟蹤,F9斷在這
004BBF3B 0F85 55FFFFFF jnz NetClean.004BBE96//F4下去
004BBF41 E8 01000000 call NetClean.004BBF47
004BDAAC E8 9184FFFF call NetClean.004B5F42
004BDAB1 75 02 jnz short NetClean.004BDAB5//F2下斷,暫停執行跟蹤,F9斷在這
004BDB08 0F85 2AFFFFFF jnz NetClean.004BDA38//F2下斷,斷下後取消斷點,F4下去
004BDB0E E8 01000000 call NetClean.004BDB14
004BE0DA E8 C25EFFFF call NetClean.004B3FA1
004BE0DF 77 01 ja short NetClean.004BE0E2//F2下斷,暫停執行跟蹤,F9斷在這
004BE136 0F85 5AFFFFFF jnz NetClean.004BE096//F2下斷,斷下後取消斷點,F4下去
004BE13C E8 01000000 call NetClean.004BE142
004BE51D 0F85 29FFFFFF jnz NetClean.004BE44C//F2下斷,斷下後取消斷點,F4下去
004BE523 74 03 je short NetClean.004BE528
004BE528 E8 BD5CFFFF call NetClean.004B41EA
004BE52D 87F2 xchg edx,esi//F2下斷,暫停執行跟蹤,F9斷在這
004BE578 E8 245AFFFF call NetClean.004B3FA1
004BE57D 71 01 jno short NetClean.004BE580//F2下斷,暫停執行跟蹤,F9斷在這
004BE605 E8 904AFFFF call NetClean.004B309A
004BE60A 0F82 03000000 jb NetClean.004BE613//F2下斷,暫停執行跟蹤,F9斷在這
004BE632 E8 985EFFFF call NetClean.004B44CF
004BE637 C1DA 12 rcr edx,12//F2下斷,暫停執行跟蹤,F9斷在這
004BE63D 0F85 71FFFFFF jnz NetClean.004BE5B4//F2下斷,斷下後取消斷點,F4下去
004BE643 EB 01 jmp short NetClean.004BE646
…… ……省 略…… ……
004BEA52 0F85 3BFFFFFF jnz NetClean.004BE993//F2下斷,斷下後取消斷點,F4下去
004BEA58 50 push eax
004BEE16 0F85 36FFFFFF jnz NetClean.004BED52//F2下斷,斷下後取消斷點,F4下去
004BEE1C E8 01000000 call NetClean.004BEE22
004BEF72 0F85 4AFFFFFF jnz NetClean.004BEEC2//F2下斷,斷下後取消斷點,F4下去
004BEF78 E8 01000000 call NetClean.004BEF7E
004C07B7 0F85 4CFFFFFF jnz NetClean.004C0709//F2下斷,斷下後取消斷點,F4下去
004C07BD EB 01 jmp short NetClean.004C07C0
004C1B9F 0F85 34FFFFFF jnz NetClean.004C1AD9//F2下斷,斷下後取消斷點,F4下去
004C1BA5 50 push eax
004C693E 0F85 55FFFFFF jnz NetClean.004C6899//F2下斷,斷下後取消斷點,F4下去
004C6944 50 push eax
004C7006 0F85 3DFFFFFF jnz NetClean.004C6F49//F2下斷,斷下後取消斷點,F4下去
004C700C EB 01 jmp short NetClean.004C700F
004C7C88 0F85 52FFFFFF jnz NetClean.004C7BE0//F2下斷,斷下後取消斷點,F4下去
004C7C8E E8 01000000 call NetClean.004C7C94
再次 TC EIP<004B0000 數分鐘後程式自動停在00445E14處!檢視執行跟蹤就知道程式是從何處返回的。
004C8612 8B85 71B64100 mov eax,dword ptr ss:[ebp+41B671] ; NetClean.00445E14
004C8618 0385 383F4000 add eax,dword ptr ss:[ebp+403F38]
//EAX=00045E14 + 00400000=00445E14 這就是OEP值 :-)
004C861E 8985 71B64100 mov dword ptr ss:[ebp+41B671],eax ; NetClean.00445E14
004C8624 61 popad
004C8625 8BC5 mov eax,ebp
004C8627 E8 9493FEFF call NetClean.004B19C0
004C862C FFB5 71B64100 push dword ptr ss:[ebp+41B671] ; NetClean.00445E14
004C8632 8BE8 mov ebp,eax
004C8634 C3 retn //返回 00445E14 飛向光明之巔!:-D
――――――――――――――――――――――――
看來這個東東沒有被ACProtect殼 Stolen Code 呀 :-)
00445E14 55 push ebp//在這兒用LordPE完全DUMP這個程式
00445E15 8BEC mov ebp,esp
00445E17 6A FF push -1
00445E19 68 C0E24400 push NetClean.0044E2C0
00445E1E 68 D65F4400 push NetClean.00445FD6
00445E23 64:A1 00000000 mov eax,dword ptr fs:[0]
00445E29 50 push eax
00445E2A 64:8925 00000000 mov dword ptr fs:[0],esp
00445E31 83EC 68 sub esp,68
00445E34 53 push ebx
00445E35 56 push esi
00445E36 57 push edi
00445E37 8965 E8 mov dword ptr ss:[ebp-18],esp
00445E3A 33DB xor ebx,ebx
00445E3C 895D FC mov dword ptr ss:[ebp-4],ebx
00445E3F 6A 02 push 2
00445E41 FF15 60B74400 call dword ptr ds:[44B760]
――――――――――――――――――――――――
重新執行,執行ImportREC,選擇這個程式。把OEP改為00045E14,點IT AutoSearch,把大小改為:A6C 點“Get Import”,只有一個函式無效,用“追蹤層次3”修復之,FixDump。
―――――――――――――――――――――――――――――――――
二、修復 丟失程式碼
執行脫殼後的dumped_.exe當然出錯啦,找到出錯的地方:
004AF00B FF25 6C5C1400 jmp dword ptr ds:[145C6C]
…… ……省 略…… ……
004B076F FF25 046C1400 jmp dword ptr ds:[146C04]
這一大段程式碼全部丟失了,現在要做的就是讓程式在執行時把這段程式碼解壓在程式內!這樣脫殼後就不會丟失了。其實偶以前的筆記已經給出瞭解決方法,只要你細心跟蹤了就能發現的。
複製NetClean.exe以防不測。用LordPE給其加個新的區段:大小00020000 ,然後用WinHex在程式末尾0007D118處貼上00020000長度的00位元組。可以在0007D118處寫入某些字元以便查詢,如:fly[FCG]
設定LordPE的“重建”選項,只保留“驗證PE”一個選項,最後用LordPE重建“增肥”後的 NetClean.exe。
――――――――――――――――――――――――
用flyODBG載入“增肥”後NetClean.exe,忽略所有異常選項,取消以前的所有斷點。偶們開始還原丟失程式碼!
004AE000 60 pushad//進入OD後斷在這!
004AE001 79 05 jns short NetClean.004AE008
★★下命令:BP GlobalAlloc+2 ★★
77E536A3 6A 1C push 1C
77E536A5 68 D018E677 push kernel32.77E618D0//斷在這!中斷5次後取消斷點 返回程式
77E536AA E8 323E0000 call kernel32.77E574E1
…… ……省 略…… ……
77E5379E C2 0800 retn 8//返回到 004B1BAD
F9執行,在77E536A5處中斷5次,返回程式。當然,對於其它用ACProtect加殼的程式,可以返回程式看是哪裡對丟失程式碼動手腳,以確定具體的位置!
返回程式後偶們要知道剛才新增位元組的具體位置:Alt+M檢視記憶體,在整個區段搜尋:fly[FCG]
004E1118 66 6C 79 5B 46 43 47 5D 00 00 00 00 00 00 00 00 fly[FCG]........
確定新增位元組開始在004E1118處! :-)
004B1B9B B9 70170000 mov ecx,1770
004B1BA0 68 10270000 push 2710
004B1BA5 6A 40 push 40
004B1BA7 FF95 F1434000 call dword ptr ss:[ebp+4043F1]//CALL GlobalAlloc
004B1BAD 8BF8 mov edi,eax//EAX=00145C68 把返回值改為:004E1118 狸貓換太子:-)
004B1BAF 81C7 A00F0000 add edi,0FA0
004B1BB5 50 push eax
004B1BB6 B9 70170000 mov ecx,1770
004B1BBB 8DB5 05204000 lea esi,dword ptr ss:[ebp+402005]
004B1BC1 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
004B1BC3 5A pop edx
004B1BC4 8BF2 mov esi,edx
004B1BC6 81C6 A00F0000 add esi,0FA0
004B1BCC 8BFE mov edi,esi
004B1BCE B9 70170000 mov ecx,1770
004B1BD3 AC lods byte ptr ds:[esi]
004B1BD4 32C3 xor al,bl
004B1BD6 AA stos byte ptr es:[edi]
004B1BD7 E2 FA loopd short NetClean.004B1BD3
004B1BD9 8BFA mov edi,edx
004B1BDB B9 E8030000 mov ecx,3E8
004B1BE0 8BC2 mov eax,edx
004B1BE2 05 A00F0000 add eax,0FA0
004B1BE7 AB stos dword ptr es:[edi]
004B1BE8 83C0 06 add eax,6
004B1BEB E2 FA loopd short NetClean.004B1BE7
004B1BED B9 E8030000 mov ecx,3E8
004B1BF2 8DBD 05204000 lea edi,dword ptr ss:[ebp+402005]
004B1BF8 8BC2 mov eax,edx
004B1BFA 66:C707 FF25 mov word ptr ds:[edi],25FF
004B1BFF 8947 02 mov dword ptr ds:[edi+2],eax
004B1C02 83C7 06 add edi,6
004B1C05 83C0 04 add eax,4
004B1C08 E2 F0 loopd short NetClean.004B1BFA
004B1C0A 60 pushad
004B1C0B E8 00000000 call NetClean.004B1C10
004B1C10 5E pop esi
004B1C11 83EE 06 sub esi,6
004B1C14 B9 92000000 mov ecx,92
004B1C19 29CE sub esi,ecx
004B1C1B BA 5FBEACA3 mov edx,A3ACBE5F
004B1C20 C1E9 02 shr ecx,2
004B1C23 83E9 02 sub ecx,2
004B1C26 83F9 00 cmp ecx,0
004B1C29 7C 1A jl short NetClean.004B1C45
004B1C2B 8B048E mov eax,dword ptr ds:[esi+ecx*4]
004B1C2E 8B5C8E 04 mov ebx,dword ptr ds:[esi+ecx*4+4]
004B1C32 33C3 xor eax,ebx
004B1C34 C1C0 11 rol eax,11
004B1C37 03C2 add eax,edx
004B1C39 81F2 47137A8D xor edx,8D7A1347
004B1C3F 89048E mov dword ptr ds:[esi+ecx*4],eax
004B1C42 49 dec ecx
004B1C43 EB E1 jmp short NetClean.004B1C26
004B1C45 61 popad
004B1C46 61 popad
004B1C47 C3 retn
現在丟失程式碼已經全部還原在偶新增的區段內了,跑不了了 :-)
在OEP值00445E14處下記憶體訪問斷點,F9執行程式,直達入口!DUMP出程式!重新修復輸入表,正常執行!
☆☆☆☆☆ 三千丈紅塵 蒼茫人世 吾將何處翱翔 ☆☆☆☆☆
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ _ , 青春都一餉
( /~ / ~-._ |
`\ _/ ~ ) 忍把浮名
_-~~~-.) )__/;;,. _ //'
/'_, --~ ~~~- ,;;___( (.-~~~-. 換了破解輕狂
`~ _( ,_..-- ( ,;'' / ~-- /._`
/~~//' /' `~ ) /--.._, )_ `~
" `~" " `" /~'` `\~~
" " "~' ""
Cracked By 巢水工作坊――fly [OCN][FCG][NUKE]
2003-12-15 23:00
相關文章
- Acprotect之完美解除安裝XP V9.15脫殼修復 (狗尾續貂)2015-11-15
- Acprotect之完美解除安裝XP V9.15脫殼修復+偽破解篇祝賀FLY大俠2015-11-15
- 夢幻Ollydbg ―― 淺談 ACProtect V1.09 Pro
的反跟蹤And脫殼2015-11-15
- ACProtect 1.21專業版主程式的脫殼2015-11-15
- 跟蹤aspr殼的pre-dip,解除使用限制2004-06-28
- 解除安裝oracleasm實驗模擬2013-10-20OracleASM
- 淺談DBPE2.33脫殼修復2015-11-15
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- Krypton
0.5加殼程式脫殼及輸入表修復記2004-10-06
- HTMLZip脫殼後的Import Table的修復 (750字)2001-02-10HTMLImport
- 完美解除安裝 V7.02002-12-11
- ASProtect 1.23RC4之System Cleaner
4.91d脫殼修復and破解2015-11-15
- 模擬修復AD資料2017-11-08
- Mac如何修復“無法解除安裝磁碟”錯誤2021-11-08Mac
- 用dillodumper2.5脫armdillo加殼的XX軟體在xp下的IAT修復
(7千字)2015-11-15
- XP下完全解除安裝windwos messenger 4.7的方法(轉)2007-08-11Messenger
- 較完善的舊版Acprotect1.0x-1.2x脫殼指令碼2004-12-20指令碼
- ASProtect V1.2脫殼――Asterisk Password
Recovery XP2015-11-15AST
- ORACLE 11G完美解除安裝2012-09-10Oracle
- 幻影 V2.33 脫殼+修復――dbpe.exe主程式2015-11-15
- 偽 SVK Protector 1.32 脫殼+修復――SVK Protector
DEMO 1.32 主程式2015-11-15
- windows xp解除安裝oracle 10g2014-01-05WindowsOracle 10g
- 用OD對Aspr加殼程式的手動脫殼及修復 (7千字)2015-11-15
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- 老妖的 C32Asm V0.4.12 脫殼+修復+破解2015-11-15ASM
- Blaze Media Pro5.05脫殼+基本修復CC(int3)+破解2015-11-15
- ORACLE 9i完全完美解除安裝2012-09-10Oracle
- 惡意解除安裝oracle軟體恢復方法2014-08-25Oracle
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 某殼分析+修復(二)2018-05-14
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- MYSQL完全解除安裝方法2011-07-19MySql
- PSU之解除安裝與安裝2016-01-06
- 對Crunch v1.1加殼程式的手動脫殼及反跟蹤程式碼的一點分析
(15千字)2000-10-02
- 完美解除安裝7.00版破解 (7千字)2002-03-18
- 打造可隨意安裝的完美Windows XP映象(轉)2007-08-11Windows
- 用Armadillo標準加殼的程式的脫殼和引入表修復方案---OLLYDBG (8千字)2015-11-15
- 淺談SVKP 1.3X殼的輸入表修復――登錄檔醫生 V2.96 脫殼+破解2015-11-15