菜鳥脫 UltraFXP 0.9941 殼( SVKP )+ 破解
這個軟體是在很久以前看fly大俠脫文時,fly大俠提到過的,當時我下載後一直沒動它,最近才拿出來研究,花了不少時間。這個軟體最近版本用了ACProtect加殼,如果要找SVKP殼的就找老一點的版本。雖然不是最新版,但還是要對作者說sorry。
UltraFXP 0.9941 脫殼( SVKP )+破解
【軟體簡介】:一國產ftp,fxp軟體。
【下載】: 用google或百度找。
【作者宣告】:初學Crack,冒犯及失誤之處請諸位大俠指正!
【除錯環境】:WinXP、Ollydbg1.10b、PEiD、LordPE、ImportREC
用PEiD檢視殼為:SVKP 1.3x -> Pavol Cerven
1.找oep
隱藏ollydbg,忽略kernel32記憶體異常,其它的不忽略.下bp GetProcAddress+11,(注意:不能在函式第一
句下斷,很多殼都會檢測到的),f9執行,異常處shift+f9透過,直到中斷在GetProcAddress+11,然後到
memory map視窗在ultrafxp程式碼段下記憶體訪問斷點,f9執行,到下面程式碼:
0056EEAB NOP
0056EEAC NOP
0056EEAD NOP
0056EEAE CALL UltraFxp.004079B8 //中斷在這,偽oep
0056EEB3 MOV EBX, DWORD PTR DS:[58802C] ; UltraFxp.0058B318
0056EEB9 MOV EAX, DWORD PTR DS:[588940]
0056EEBE MOV EAX, DWORD PTR DS:[EAX]
0056EEC0 CALL UltraFxp.0043C18C
0056EEC5 MOV EAX, DWORD PTR DS:[588864]
0056EECA MOV EDX, UltraFxp.0056F5E4 ; ASCII "Unregistered version!"
0056EECF CALL UltraFxp.00403E2C
0056EED4 PUSHAD
0056EED5 PUSH EAX
0056EED6 PUSH ECX
0056EED7 PUSH EDX
0056EED8 PUSH EBX
0056EED9 PUSH EBP
0056EEDA PUSH ESI
0056EEDB PUSH EDI
0056EEDC MOV EDX, 8E9AF9D6
0056EEE1 XOR EDX, 3159F8D7
0056EEE7 PUSH EDX
.............
0056EF3A XOR ECX, 3113B900
0056EF40 XOR EDX, DFB7D6BE
0056EF46 PUSH ECX
0056EF47 PUSH EDX
0056EF48 MOV ECX, ESP
0056EF4A XOR EDX, 56EFD6BE
0056EF50 ADD EDX, ECX
0056EF52 PUSH EDX
0056EF53 XOR ECX, 11B8A811
0056EF59 XOR EDX, 22222222
0056EF5F RETN
0056EEAE是偽oep,根據eax=56eab0,esp=12fea8以及經驗補上stolen bytes,共14位元組:
0056EEA0 55 PUSH EBP
0056EEA1 8BEC MOV EBP, ESP
0056EEA3 81C4 E8FEFFFF ADD ESP, -118
0056EEA9 B8 B0EA5600 MOV EAX, 0056EAB0
用lordpe糾正大小後把它dump出來,並把oep改為0056EEA0。
2.修復IAT
經過查詢,找到加密後的IAT,從58C1B8到58ca40共88c個。可以用ImportREC的跟蹤層次來修復,有25
個是錯誤。下面我們來看看怎麼修改程式,能得到錯誤少一點的IAT。重新載入程式。在58C1B8處下個
記憶體寫入斷點,執行,異常處shift+f9透過,中斷幾次後到下面程式碼:
07346D00 MOV DWORD PTR DS:[EDI], EAX //中斷在這,eax=075775DC(加密後的函式地址)
07346D02 JL SHORT 07346D07
07346D04 JMP SHORT 07346D09
07346D06 JMP EF96687F
07346D0B ADD DWORD PTR DS:[EAX], EAX
07346D0D ADD BYTE PTR DS:[EAX], AL
中斷後,看看堆疊窗,esp=12ff74,在esp+1c=12ff90處正是正確的函式地址(不要問為什麼,我也不知
道,是一高人的妙招),因此我們看能不能在07346D00之前把正確的函式地址放入eax,在程式碼窗往上
看:
07346CF6 5F POP EDI
07346CF7 EB 02 JMP SHORT 07346CFB
07346CF9 CD 20 INT 20
07346CFB 58 POP EAX
07346CFC EB 02 JMP SHORT 07346D00
07346CFE 0F NOP //花指令,nop掉看看
07346CFF E8 NOP //花指令,nop掉看看
07346D00 8907 MOV DWORD PTR DS:[EDI], EAX
我們可以改成這樣:
073C6CF6 5F POP EDI
073C6CF7 58 POP EAX
073C6CF8 8B4424 1C MOV EAX, DWORD PTR SS:[ESP+1C]
073C6CFC EB 02 JMP SHORT 073C6D00
在0056EEA E處下個斷,f9執行到0056EEAE。ok,執行ImportREC,填入oep=0016EEA0,RVA=18C1B8,
size=88c,按get imports得到基本完整的IAT,但還有12個有問題:
0 0 018C20C ? 0000 075E33FC
0 0 018C21C ? 0000 075E2A23
0 0 018C22C ? 0000 075E2085
0 0018C2E0 ? 0000 075E33FC
0 0018C3C8 ? 0000 075EB008
0 0018C3CC ? 0000 075EAC83
0 0018C3F0 ? 0000 075E33FC
0 0018C424 ? 0000 075E3077
0 0018CA2C ? 0000 075E85D2
0 0018CA30 ? 0000 075E8098
0 0018CA34 ? 0000 075E6FC4
0 0018CA38 ? 0000 075E6E2C
不管用什麼外掛都修復不了,沒辦法只好手工了。儲存好IAT,過載軟體,一個一個慢慢跟。
004079BB CALL UltraFxp.004078B8 (JMP DWORD PTR DS:[58C2E0])
過了這個call,eax=400000,這應該是GetModuleHandleA。其他的我不詳細寫了,我得出的前面8個為:
1 0018C20C kernel32.dll 016F GetModuleHandleA
1 0018C21C kernel32.dll 0103 GetCommandLineA
1 0018C22C kernel32.dll 00B0 ExitProcess
1 0018C2E0 kernel32.dll 016F GetModuleHandleA
1 0018C3C8 kernel32.dll 01D5 GetVersionExA
1 0018C3CC kernel32.dll 01D4 GetVersion
1 0018C3F0 kernel32.dll 016F GetModuleHandleA
1 0018C424 kernel32.dll 0135 GetCurrentProcess
其中0018C22C處的我跟到了VirtualFree,但後來執行退出時總有問題,改成ExitProcess就好了,不知
有沒有道理。
0018CA2C~0018CA38四個,一開始怎麼也跟不到系統函式中,一生氣乾脆把相應的呼叫nop掉了,嘿,
就行了。後來再靜下心來跟了一下,第一個函式是檢測有沒有偵錯程式,呼叫了IsDebuggerPresent函式
,可以用IsDebuggerPresent代替。第三個是用來複制註冊資訊的,其他兩個好像沒什麼用。因此相應
的呼叫改為:
004EE33F CALL 004E4EDC //nop掉
004EE352 CALL 004E4ECC //nop掉
004EE361 PUSH EAX //eax裡是註冊資訊地址,呼叫返回eax=1,表示已註冊,0是未註冊
004EE362 CALL 004E4EC4 //因此這兩句改成:mov eax,1
004EE392 CALL 004E4ED4 //nop掉
004EE397 RETN
好,IAT修改好了,修復dump.exe。執行dump_.exe,出錯。真麻煩啊,看看吧:
0012FE24 LODS BYTE PTR DS:[ESI]
0012FE25 XOR AL, DL
0012FE27 STOS BYTE PTR ES:[EDI]
0012FE28 LOOPD SHORT 0012FE24
0012FE2A POP ECX
0012FE2B POP ESI
0012FE2C CALL DWORD PTR DS:[4EEAA4] //出錯!解碼函式,指向殼內
0012FE32 ADD ESP, 54
0012FE38 POPAD
0012FE39 PUSH 1010101
0012FE3E RETN
程式在堆疊中執行,開始我以為搞錯了,怎麼跑到堆疊中去了?後來發現這些程式碼都是動態生成的,是
類似前面0056EED4~0056EF5F的程式碼生成的,然後由這段程式碼再解碼正常的程式段。0012FE2C 處是解
碼函式,指向殼內,脫殼後當然會出錯了。這樣的地方有100多處。看來只好自己程式設計模擬殼來解碼了
。還好解碼函式很簡單。還有一處類似的解碼函式,CALL DWORD PTR DS:[4F18D5]。在程式末端加入以
下程式碼:
0056FFA0 TEST AL, AL
0056FFA2 JE SHORT 0056FFC0
0056FFA4 MOV EDI, ESI
0056FFA6 MOV EBX, 52E4B8F8
0056FFAB LODS BYTE PTR DS:[ESI]
0056FFAC XOR EBX, ECX
0056FFAE XOR AL, BL
0056FFB0 ROL AL, CL
0056FFB2 XOR AL, BH
0056FFB4 STOS BYTE PTR ES:[EDI]
0056FFB5 LOOPD SHORT 0056FFAB
0056FFB7 RETN
0056FFB8 NOP
0056FFBF NOP
0056FFC0 MOV EDI, ESI
0056FFC2 MOV EBX, 52E4B8F8
0056FFC7 LODS BYTE PTR DS:[ESI]
0056FFC8 XOR EBX, ECX
0056FFCA XOR AL, BH
0056FFCC ROR AL, CL
0056FFCE XOR AL, BL
0056FFD0 STOS BYTE PTR ES:[EDI]
0056FFD1 LOOPD SHORT 0056FFC7
0056FFD3 RETN
再把[4EEAA4]內容改為0056FFC0,[4F18D5]改為0056FFA0,儲存。執行,OK。
註冊資訊放在4ee3e0處,你愛怎麼改就怎麼改。
終於寫完了,好累。有些地方說起來簡單,但都是經過若干遍試出來的,希望對感興趣的人有點幫助。
錯誤之處,還請各位大俠指正。
pyzpyz
2004.2.25
相關文章
- 淺談SVKP 1.3X殼的輸入表修復――登錄檔醫生 V2.96 脫殼+破解2015-11-15
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- MySQL Manager 2.8.0.1脫殼破解手記破解分析2004-11-03MySql
- “天音怒放”手動脫殼及破解2015-11-15
- jdpack的脫殼及破解 (5千字)2002-06-25
- 黑娃講破解知識之菜鳥的破解之路(轉)2007-08-12
- 菜鳥破解錄之 The Cleaner (4千字)2000-08-12
- 菜鳥破解錄之 DlgXRSizer (4千字)2000-08-17
- 菜鳥學堂之破解Sessioncookie的方法(轉)2007-09-19SessionCookie
- 殼的工作原理脫殼2013-04-10
- 菜鳥破解錄之 Animated Screen (4千字)2000-08-13
- 菜鳥破解錄之 CleanReg 3.2.6 (3千字)2000-08-15
- 菜鳥破解錄之 AutoDialogs (3千字)2000-08-18
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- VBExplorer.exe脫殼教程
附脫殼指令碼2015-11-15指令碼
- 不脫殼破解極光多能鬧鐘
(16千字)2003-04-14
- 菜鳥破解錄(九)之 CDSpace 1.95 (4千字)2000-07-22
- 菜鳥破解錄(17)之 BackupXpress Pro (3千字)2000-08-05
- 菜鳥破解錄(19)之 XMLwriter 1.21 (9千字)2000-08-08XML
- 菜鳥破解之軟體自己顯示註冊碼2015-11-15
- 魔術情書
6.55 破解過程+不脫殼打破解補丁【原創】2004-12-07
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- 菜鳥破解一篇:vcrkme01 (11千字)2001-10-19
- 菜鳥破解錄(10)之 A Day in the Life 1.51
(6千字)2000-07-23
- 菜鳥破解錄 JPEG Optimizer3.15 (6千字)2000-08-14
- 菜鳥破解實錄 之Terrapin FTP Browser (5千字)2000-09-09APIFTP
- 脫殼基本知識2015-11-15
- SoftDefender主程式脫殼2015-11-15
- International CueClub主程式脫殼(Softwrap殼)2004-09-12
- 老妖的 C32Asm V0.4.12 脫殼+修復+破解2015-11-15ASM
- Blaze Media Pro5.05脫殼+基本修復CC(int3)+破解2015-11-15
- 菜鳥破解vis_ddr v1.11 (14千字)2001-12-08
- 菜鳥學破解(七)之 PowerZip V5.2 (3千字)2000-07-21
- 菜鳥破解錄(11)之 WinGlobe2.0 (7千字)2000-07-24
- 菜鳥破解錄(12)之 AxMan3.10 (3千字)2000-07-26
- 菜鳥破解錄(18)之 GWD Text Editor 3.0 (4千字)2000-08-06
- 菜鳥破解實錄之 Dynamic Desktop 1.4.2 (9千字)2000-08-09