以殼解殼――ASProtect 1.23RC4殼的Stolen Code簡便解決方案
下載頁面:http://www.superdown.com/soft/17405.htm
軟體大小:4250KB
軟體語言:英文
軟體類別:國外軟體 / 共享版 / 程式設計開發
執行環境:Win9x/WinNT/2000/ME/XP
加入時間:2004-4-16 20:08:04
軟體評級:***
開 發 商:http://www.sicomponents.com/rbldr.html
軟體介紹:自稱是自Borland Resource WorkShop 4.5後的長久期待>可以直接開啟資原始檔,可以匯入.exe檔案並可選擇指定的資源以便於修改,修改後只能存為資源格式,如果直接開啟表但可以類似exescope一樣修改,如果是匯入的話,只能看到16進位制碼。
【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【除錯環境】:WinXP、Ollydbg1.10B、PEiD、LordPE、AsprDbgr、ImportREC 1.42+
―――――――――――――――――――――――――――――――――
【脫殼過程】:
如今的猛殼們把Stolen Code越做越變態,雖然大部分Stolen Code都可以分析出來,但是有點費時間。這次以Resource Builder 2.1.0.3為例來演示一種ASProtect 1.23RC4殼的Stolen Code簡便解決方案。這個方法我曾經見過飛速兄用過。在殼把所有的程式碼解壓之後、處理Stolen Code之前,把程式Dump出來,補上那段殼程式碼,模仿構造當時的堆疊和暫存器值環境,這樣就由殼自己來解決Stolen Code的問題啦。推而廣之,這個Stolen Code簡便解決方案也適用於某些其他殼。
―――――――――――――――――――――――――――――――――
一、Pre-Dip:用自己的名字註冊
老規矩:用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。
因為程式的rbcore.dll和sicmplr.dll也是用了ASProtect加殼,所以我們先忽略所有的異常選項,當Ollydbg彈出“是壓縮程式碼――要繼續進行分析嗎?”,點“否”。接著設定Ollydbg忽略除了“記憶體訪問異常”之外的所有其它異常選項。
程式碼:
00401000 68 01A06E00 push Resbldr2.006EA001//進入OD後停在這 00401005 E8 01000000 call Resbldr2.0040100B 0040100A C3 retn
Shift+F9執行,注意看堆疊,當第2次在堆疊中看見“8wh3JAAQjOI=”硬碟指紋時,可以處理了。
程式碼:
0012FF3C 0012FF44 指標到下一個 SEH 記錄 0012FF40 012B465C SE 控制程式碼 0012FF44 0012FFE0 指標到下一個 SEH 記錄 0012FF48 012B4C49 SE 控制程式碼 0012FF4C 0012FF90 0012FF50 012A0000 0012FF54 00D00000 0012FF58 012B4138 0012FF5C 012D33BC ASCII "8wh3JAAQjOI="//硬碟指紋
程式碼:
012B46A5 3100 xor dword ptr ds:[eax],eax//異常,第2次看見硬碟指紋 012B46A7 EB 01 jmp short 012B46AA
Alt+M開啟記憶體檢視視窗,在00401000段下 記憶體訪問斷點,Shift+F9透過異常,斷下
程式碼:
00578654 55 push ebp 00578655 8BEC mov ebp,esp 00578657 8B45 08 mov eax,dword ptr ss:[ebp+8] 0057865A 85C0 test eax,eax 0057865C 74 0C je short Resbldr2.0057866A 0057865E 8038 00 cmp byte ptr ds:[eax],0 00578661 74 07 je short Resbldr2.0057866A 00578663 C605 90046200 01 mov byte ptr ds:[620490],1 0057866A 8B15 84046200 mov edx,dword ptr ds:[620484] 00578670 8915 80046200 mov dword ptr ds:[620480],edx 00578676 A3 84046200 mov dword ptr ds:[620484],eax//註冊名 0057867B 5D pop ebp 0057867C C2 0400 retn 4
過了00578676之後,[620484]處應該是儲存的註冊使用者名稱,找一段空地,在613B00處寫入:fly [OCN][FCG][NUKE][DCM],然後把[620484]處的值改為613B00。OK,這個Pre-Dip處理完畢。感謝lipton兄的指教。這個程式有幾個功能的程式碼需要真正的Key才能解開,所以這只是偽註冊罷了。
―――――――――――――――――――――――――――――――――
二、Dump以及區域脫殼
取消記憶體斷點,繼續Shift+F9執行。來到ASProtect最後1次典型異常處。
程式碼:
012B39EC 3100 xor dword ptr ds:[eax],eax//ASProtect最後1次典型異常處 012B39EE 64:8F05 00000000 pop dword ptr fs:[0] 012B39F5 58 pop eax 012B39F6 833D B07E2B01 00 cmp dword ptr ds:[12B7EB0],0 012B39FD 74 14 je short 012B3A13 012B39FF 6A 0C push 0C 012B3A01 B9 B07E2B01 mov ecx,12B7EB0 012B3A06 8D45 F8 lea eax,dword ptr ss:[ebp-8] 012B3A09 BA 04000000 mov edx,4 012B3A0E E8 2DD1FFFF call 012B0B40 012B3A13 FF75 FC push dword ptr ss:[ebp-4] 012B3A16 FF75 F8 push dword ptr ss:[ebp-8] 012B3A19 8B45 F4 mov eax,dword ptr ss:[ebp-C] 012B3A1C 8338 00 cmp dword ptr ds:[eax],0 012B3A1F 74 02 je short 012B3A23 012B3A21 FF30 push dword ptr ds:[eax] 012B3A23 FF75 F0 push dword ptr ss:[ebp-10] 012B3A26 FF75 EC push dword ptr ss:[ebp-14] 012B3A29 C3 retn//此處下斷,Shift+F9斷下
此時ESP=0012FF5C,看看堆疊,使用ESP定律
程式碼:
0012FF5C 012CE9DC 0012FF60 00400000 ASCII "MZP" 0012FF64 C244FCB6 0012FF68 0012FFA4//注意這裡 ★
0012FF68=0012FFA4,選中0012FF68轉存處的4個位元組,下“硬體訪問->Word”斷點。F9執行,中斷下來
程式碼:
012C6A41 EB 44 jmp short 012C6A87//斷在這裡 012C6A43 EB 01 jmp short 012C6A46 012C6A46 51 push ecx 012C6A47 57 push edi 012C6A48 9C pushfd 012C6A49 FC cld 012C6A4A BF 00000000 mov edi,0 012C6A4F B9 00000000 mov ecx,0 012C6A54 F3:AA rep stos byte ptr es:[edi]//這裡下斷 012C6A56 9D popfd 012C6A57 5F pop edi 012C6A58 59 pop ecx 012C6A59 C3 retn
程式碼:
012C6A87 03C3 add eax,ebx 012C6A89 BB 8B070000 mov ebx,78B//注意這個值 ★ 012C6A8E 0BDB or ebx,ebx 012C6A90 75 07 jnz short 012C6A99
程式碼:
012C6A99 E8 00000000 call 012C6A9E 012C6A9E 5D pop ebp 012C6A9F 81ED 4DE14B00 sub ebp,4BE14D 012C6AA5 8D85 F2E04B00 lea eax,dword ptr ss:[ebp+4BE0F2] 012C6AAB 8D8D 94E14B00 lea ecx,dword ptr ss:[ebp+4BE194] 012C6AB1 03CB add ecx,ebx 012C6AB3 8941 01 mov dword ptr ds:[ecx+1],eax 012C6AB6 8D85 36E14B00 lea eax,dword ptr ss:[ebp+4BE136] 012C6ABC 8D8D FAE04B00 lea ecx,dword ptr ss:[ebp+4BE0FA] 012C6AC2 8901 mov dword ptr ds:[ecx],eax 012C6AC4 B8 5E140000 mov eax,145E 012C6AC9 8D8D FFE04B00 lea ecx,dword ptr ss:[ebp+4BE0FF] 012C6ACF 8901 mov dword ptr ds:[ecx],eax 012C6AD1 8D8D 94E14B00 lea ecx,dword ptr ss:[ebp+4BE194] 012C6AD7 8D85 94F34B00 lea eax,dword ptr ss:[ebp+4BF394] 012C6ADD 51 push ecx 012C6ADE 50 push eax 012C6ADF E8 76FFFFFF call 012C6A5A 012C6AE4 61 popad//下面開始處理Stolen Code ★ 012C6AE5 EB 02 jmp short 012C6AE9
OK,現在我們不去分析這個東東的Stolen Code,程式程式碼已經解開,可以用LordPE糾正ImageSize後完全DUMP這個程式了!
接著 區域脫殼:012C0000,大小=00008000,也就是脫出上面的部分殼處理程式碼段。
下面走至偽OEP:在012C6A54處下斷,F9執行,斷下。
程式碼:
012C6A54 F3:AA rep stos byte ptr es:[edi]//斷下 012C6A56 9D popfd 012C6A57 5F pop edi 012C6A58 59 pop ecx 012C6A59 C3 retn//飛向光明之巔!返回程式004072DC
程式碼:
004072DC FF25 1CA36200 jmp dword ptr ds:[62A31C]//第1個函式啦
F7走下去,來到偽OEP處。當然這個東東的Stolen Code也不難分析出來,這裡只是作為一個例子來演示罷了。
程式碼:
00613652 61 popad 00613653 0000 add byte ptr ds:[eax],al 00613655 0000 add byte ptr ds:[eax],al 00613657 0000 add byte ptr ds:[eax],al 00613659 0000 add byte ptr ds:[eax],al 0061365B 0000 add byte ptr ds:[eax],al 0061365D 0000 add byte ptr ds:[eax],al 0061365F E8 3C3DDFFF call Resbldr2.004073A0//偽OEP ★ 00613664 33C0 xor eax,eax 00613666 55 push ebp 00613667 68 B6366100 push Resbldr2.006136B6 0061366C 64:FF30 push dword ptr fs:[eax] 0061366F 64:8920 mov dword ptr fs:[eax],esp 00613672 A1 EC4E6200 mov eax,dword ptr ds:[624EEC] 00613677 8B00 mov eax,dword ptr ds:[eax] 00613679 E8 86C2E8FF call Resbldr2.0049F904 0061367E A1 EC4E6200 mov eax,dword ptr ds:[624EEC] 00613683 8B00 mov eax,dword ptr ds:[eax] 00613685 BA CC366100 mov edx,Resbldr2.006136CC; ASCII "Resource Builder 2.0" 0061368A E8 6DBEE8FF call Resbldr2.0049F4FC
現在我們來“組裝”一下dumped.exe。呵呵,用LordPE開啟dumped.exe,從磁碟載入剛才區域脫殼的Region012C0000-012C8000.dmp區段,修改其Voffset=00EC0000,只保留LordPE的“驗證PE”選項,重建PE。Dump完成!
―――――――――――――――――――――――――――――――――
三、用AsprDbgr搞定輸入表
程式碼:
AsprDbgr v1.0beta (:P) Made by me... Manko. iEP=401000 (E:\試煉場\脫殼學習\ASProtect\Resource Builder 2.0\Resbldr2.exe GST returns to: 12A2667 Trick aspr GST... (EAX=12121212h) GV returns to: 12B1A61 IAT Start: 62A21C End: 62ABAC Length: 990 IATentry 62A23C = 12B1C8C resolved as GetVersion IATentry 62A270 = 12B17A4 resolved as GetProcAddress IATentry 62A274 = 12B1C64 resolved as GetModuleHandleA IATentry 62A288 = 12B1CD8 resolved as GetCommandLineA IATentry 62A31C = 12B1C64 resolved as GetModuleHandleA IATentry 62A3CC = 12B1CC8 resolved as LockResource IATentry 62A410 = 12B1C8C resolved as GetVersion IATentry 62A434 = 12B17A4 resolved as GetProcAddress IATentry 62A43C = 12B1C64 resolved as GetModuleHandleA IATentry 62A474 = 12B1CC0 resolved as GetCurrentProcessId IATentry 62A480 = 12B1CF0 resolved as FreeResource SymbolInitialize seems to have frozen. Any invalid IAT entries was NOT erased... Dip-Table at adress: 12B7AB4 0 578654 0 578694 5786C4 578728 0 6122C0 612CF8 5785DC 578610 578644 578 0 Last SEH passed. Searching for signatures. Singlestepping to OEP! Call + OEP-jump-setup at: 12C6A99 ( Code: E8000000 5D81ED ) Mutated, stolen bytes at: 12C6AE4 ( Code: 61EB02CD 20EB01F0 ) Erase of stolen bytes at: 12C6A48 ( Code: 9CFCBF87 6A2C01B9 ) Repz ... found. Skipping erase of stolen bytes. ;) Dip from pre-OEP: 4072DC (Reached from: 12C6A59) Sugested tempOEP at: 61365F GST returns to: 76171AC0
執行ImportREC 1.42+,選擇這個程式。填入:RVA=0022A21C,Size=00000990,點IT AutoSearch,點“Get Import”,剪下掉幾個無效的函式,把OEP改為00EC0000,FixDump!
―――――――――――――――――――――――――――――――――
四、以殼解殼:Stolen Code簡便解決方案
現在的OEP是012C0000,修改其入口程式碼為:
程式碼:
012C0000 BB 8B070000 mov ebx,78B 012C0005 E9 8F6A0000 jmp dumped_.012C6A99
這樣就利用了原殼的程式碼來處理Stolen Code了。儲存之後就可以執行了。
―――――――――――――――――――――――――――――――――
五、2個暗樁的修復
1、另外當點選“Option”時會自動退出,跟蹤程式找到異常出錯的地方
程式碼:
0057AF65 E8 A2D9FFFF call dumped_.0057890C//把這裡NOP掉就行了 0057AF6A 33C0 xor eax,eax
程式碼:
0057890C 55 push ebp 0057890D 8BEC mov ebp,esp 0057890F 51 push ecx 00578910 53 push ebx 00578911 8B05 1E784000 mov eax,dword ptr ds:[40781E] 00578917 8B18 mov ebx,dword ptr ds:[eax] 00578919 FF33 push dword ptr ds:[ebx] 0057891B 895D FC mov dword ptr ss:[ebp-4],ebx 0057891E 8F03 pop dword ptr ds:[ebx]//異常 00578920 8B45 FC mov eax,dword ptr ss:[ebp-4] 00578923 5B pop ebx 00578924 59 pop ecx 00578925 5D pop ebp 00578926 C3 retn
――――――――――――――――――――――――
2、點選“Link To EXE”時會自動退出
程式碼:
005788C4 55 push ebp 005788C5 8BEC mov ebp,esp 005788C7 51 push ecx 005788C8 C645 FF 00 mov byte ptr ss:[ebp-1],0 005788CC A1 48486200 mov eax,dword ptr ds:[624848] 005788D1 8038 00 cmp byte ptr ds:[eax],0 005788D4 75 19 jnz short 005788EF 005788D6 56 push esi 005788D7 8B35 68666200 mov esi,dword ptr ds:[626668] 005788DD 8B46 3C mov eax,dword ptr ds:[esi+3C] 005788E0 8B4430 28 mov eax,dword ptr ds:[eax+esi+28];00ECC000//取入口地址 005788E4 66:3D 0010 cmp ax,1000//比較後面是否是1000 005788E8 74 04 je short UnPacked.005788EE//改為JMP 005788EA 804D FF 01 or byte ptr ss:[ebp-1],1 005788EE 5E pop esi 005788EF 807D FF 00 cmp byte ptr ss:[ebp-1],0 005788F3 74 13 je short 00578908
原來005788E4這裡還檢測了原程式的入口地址,改為JMP就行了。
“Edit as Text”和“Link To EXE”的功能程式碼是需要真正的Key才能解壓的,沒辦法啦。
―――――――――――――――――――――――――――――――――
程式碼:
, _/ /| _.-~/ \_ , 青春都一晌 ( /~ / \~-._ |\ `\\ _/ \ ~\ ) 忍把浮名 _-~~~-.) )__/;;,. \_ //' /'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 換了破解輕狂 `~ _( ,_..--\ ( ,;'' / ~-- /._`\ /~~//' /' `~\ ) /--.._, )_ `~ " `~" " `" /~'`\ `\\~~\ " " "~' ""
Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]
2004-05-13 17:00
相關文章
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- ASProtect
1.23RC4 以殼解殼+暗樁修復+解除自校驗+破解――ArtCursors V3.99B32004-06-16
- ASPROtect 1.22加殼的ahaview2.0脫殼 (5千字)2002-03-24View
- ASProtect 1.23RC4之System Cleaner
4.91d脫殼修復and破解2015-11-15
- FTPrint的脫殼(asprotect) (2千字)2001-02-05FTP
- 殼的工作原理脫殼2013-04-10
- Asprotect 1.2x 加殼的 Advanced Direct
Remailer 2.17 脫殼 (3千字)2002-06-20REMAI
- Dalvik下一代殼通用解決方案2020-12-02
- Armadillo殼時間問題的解決And脫殼――Mr.Captor
V2.82015-11-15APT
- 小甜餅 --- 有關新版Asprotect加殼程式的脫殼的又一種思路
(798字)2000-09-10
- ASProtect V1.2脫殼――Asterisk Password
Recovery XP2015-11-15AST
- 關於用ASProtect v1.3加殼軟體的脫殼方法體會 (5千字)2001-11-21
- 手動脫ASProtect 的殼-Synchromagic
v3.5 build 5572003-08-03UI
- Thebat!139脫殼詳情及對Asprotect加殼保護的一點小結
(4千字)2000-03-27BAT
- 脫ASPack2.12加殼的DLL檔案簡便方法2004-12-18
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- International CueClub主程式脫殼(Softwrap殼)2004-09-12
- 哪位高手能脫3D Exploration的殼,它似乎是用ASProtect1.0加殼的。
(169字)2000-08-173D
- 對Asprotect脫殼的一點總結
(20千字)2000-08-12
- Android加殼過程中mprotect呼叫失敗的原因及解決方案2021-03-22Android
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 實現呼叫加殼的外殼中的子程式的一點見解。。 (1千字)2002-10-21
- 一次簡單的脫殼2024-08-30
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- 殼系統2011-06-03
- 如何跟蹤ASProtect外殼加密過的程式? (7千字)2001-04-13加密
- PesPin
1.0外殼簡略分析2004-09-25
- PesPin 1.1外殼簡略分析2015-11-15
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- C32Asm外殼脫殼分析筆記2015-11-15ASM筆記
- 手動脫掉Asprotect的殼,(給初學者的) (9千字)2002-01-24
- VBExplorer.exe脫殼教程
附脫殼指令碼2015-11-15指令碼
- 加殼技術探討-加殼時處理IAT2015-11-15
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- ASProtect 1.23
b18脫殼淺談 (5千字)2015-11-15
- ASProtect 1.3B Stolen code Finder2015-11-15
- 加殼技術--DRx解碼阻止除錯2004-06-25除錯
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15