淺談SVKP 1.3X殼的輸入表修復――登錄檔醫生 V2.96 脫殼+破解
淺談SVKP 1.3X殼的輸入表修復――登錄檔醫生 V2.96 脫殼+破解
下載頁面: http://www.skycn.com/soft/7156.html
軟體大小: 1928 KB
軟體語言: 英文
軟體類別: 國產軟體 / 共享版 / 解除安裝清除
應用平臺: Win9x/NT/2000/XP
加入時間: 2004-02-20 17:12:14
下載次數: 40350
推薦等級: ****
【軟體簡介】:登錄檔醫生(Registry Medic)。Windows登錄檔是一個龐雜的資料庫,它記載了Windows所必需要的硬體和軟體資訊,稍有閃失就足讓Windows不能啟動或出現這樣那樣的錯誤。在通常情況下,我們的計算機會經常性的安裝和反安裝一些程式,日積月累就會被無用的資訊充滿整個的登錄檔!Windows不但會執行減慢,還會引起莫名的錯誤。如何解決呢?登錄檔醫生就能幫助治療您的登錄檔。登錄檔醫生,能夠幫您檢查登錄檔中檔案/目錄的完整性和一致性。如果這些檔案沒有從原來的位置移到了另外一個地方,但是和登錄檔中的資訊不一致,登錄檔醫生會幫您尋找這些檔案,並匹配到相應的登錄檔資訊上。如果您的登錄檔中儲存著磁碟上已經被刪除的檔案記錄,那麼登錄檔醫生會找到它們,並建議您刪除這些登錄檔資訊。當然您也可以保留這些資訊。
【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【除錯環境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――
【過 程】:
SVK Protector的IAT加密不是很變態,用ImportREC就能修復大部分函式,但依舊有一些函式是無法識別的,SvkpIAT.dll外掛有點好用,不過碰上ExitProcess就OVER了。用了幾天時間看了幾個SVKP 1.3X的殼,簡單說一下避開IAT加密的方法,有不少是臆測,歡迎大家指正。
SVK Protector 1.32 的IAT加密我覺得可以分作三類:
①、普通函式加密 這個簡單
②、特殊函式加密 GetModuleHandleA、GetCommandLineA 等
③、SVK 檢測函式 也算是特殊函式吧,主要功能是反脫殼或者檢驗註冊
OK,Let"s Go!
―――――――――――――――――――――――――――――――――
一、Magic Jump ,避開IAT加密
設定Ollydbg忽略所有異常選項。老規矩:用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。
00558000 60 pushad//進入OD後停在這
00558001 E8 00000000 call RegMedic.00558006
00558006 5D pop ebp
00558007 81ED 06000000 sub ebp,6
0055800D EB 05 jmp short RegMedic.00558014
F9執行,程式在異常處中斷
081F137F 6285 0E0B0000 bound eax,qword ptr ss:[ebp+B0E]//SVK典型異常
下斷 BP GetModuleHandleA+5,Shift+F9 透過SVK的典型異常。斷下後取消斷點,Ctrl+F9返回
08213FC7 E8 02000000 call 08213FCE//返回這裡
08213FCC CD20 83042408 vxdcall 8240483
08213FD2 C3 retn
現在Ctrl+F在當前位置查詢以下命令並下斷:
sub dword ptr ds:[ebx],eax
mov dword ptr ds:[edi],eax
cmp dword ptr ds:[ebx],251097CC
cmp dword ptr ds:[ebx],2D66B1C5
cmp dword ptr ds:[ebx],D9B20494
cmp dword ptr ds:[ebx],D0861AA4
cmp dword ptr ds:[ebx],B1866570
cmp dword ptr ds:[ebx],9B76460E
cmp dword ptr ds:[ebx],E69307DB
cmp dword ptr ds:[ebx],A56C7B62
cmp dword ptr ds:[ebx],BB964E66
cmp dword ptr ds:[ebx],5BD70645
cmp dword ptr ds:[ebx],1DFCE00D
cmp dword ptr ds:[ebx],0FDD31
cmp dword ptr ds:[ebx],2651B795
cmp dword ptr ds:[ebx],4BF682B4
cmp dword ptr ds:[ebx],4CCF1A0F
cmp dword ptr ds:[ebx],DF87764A
cmp dword ptr ds:[ebx],FBB2B8B8
――――――――――――――――――――――――
1、普通函式加密 處理
08216AAF 8907 mov dword ptr ds:[edi],eax//寫入重定位地址
08216AB1 7C 03 jl short 08216AB6
08216AB8 61 popad
08216AB9 E8 01000000 call 08216ABF
修改:
08216AAF 61 popad//呵呵,先POPAD ★
08216AB0 8907 mov dword ptr ds:[edi],eax//寫入正確函式 ★
08216AB2 90 nop
08216AB3 EB 03 jmp short 08216AB8
08216AB8 90 nop//NOP掉原先的popad ★
08216AB9 E8 01000000 call 08216ABF
――――――――――――――――――――――――
2、特殊函式的處理:SVKP 的特殊函式(包括SVK 檢測函式)應該有17個
08214C3E 2903 sub dword ptr ds:[ebx],eax//計算 函式名的HASH值?
下面比較是否是特殊函式,是則跳轉處理:
08214D9C 813B CC971025 cmp dword ptr ds:[ebx],251097CC
08214DA7 0F84 23310000 je 08217ED0//修改:jmp 082150B6 ★
08214E21 813B C5B1662D cmp dword ptr ds:[ebx],2D66B1C5//GetCommandLineA
08214E2C 0F84 CB310000 je 08217FFD
08214E46 813B 9404B2D9 cmp dword ptr ds:[ebx],D9B20494
08214E51 0F84 FA350000 je 08218451
0821501D 813B A41A86D0 cmp dword ptr ds:[ebx],D0861AA4
08215028 0F84 DD380000 je 0821890B
0821503B 813B 706586B1 cmp dword ptr ds:[ebx],B1866570//GetModuleHandleA
08215046 0F84 343C0000 je 08218C80
08215055 813B 0E46769B cmp dword ptr ds:[ebx],9B76460E
08215060 0F84 953F0000 je 08218FFB
0821506D 813B DB0793E6 cmp dword ptr ds:[ebx],E69307DB
08215078 0F84 C33F0000 je 08219041
08215087 813B 627B6CA5 cmp dword ptr ds:[ebx],A56C7B62
08215092 0F84 F33F0000 je 0821908B
082150A1 813B 664E96BB cmp dword ptr ds:[ebx],BB964E66
082150AC 0F84 25400000 je 082190D7
082150B6 813B 4506D75B cmp dword ptr ds:[ebx],5BD70645//SVK反脫殼(註冊)函式
082150C1 0F84 59400000 je 08219120
082150D0 813B 0DE0FC1D cmp dword ptr ds:[ebx],1DFCE00D//SVK反脫殼(註冊)函式
082150DB 0F84 85400000 je 08219166
082150E8 813B 31DD0F00 cmp dword ptr ds:[ebx],0FDD31 //SVK反脫殼(註冊)函式
082150F2 0F84 B7400000 je 082191AF
082150FC 813B 95B75126 cmp dword ptr ds:[ebx],2651B795
08215107 0F84 F5400000 je 08219202//修改:jmp 08215164 ★
08215111 813B B482F64B cmp dword ptr ds:[ebx],4BF682B4
0821511C 0F84 2B410000 je 0821924D
08215126 813B 0F1ACF4C cmp dword ptr ds:[ebx],4CCF1A0F
08215130 0F84 62410000 je 08219298
0821513F 813B 4A7687DF cmp dword ptr ds:[ebx],DF87764A
08215149 0F84 BA440000 je 08219609
08215158 813B B8B8B2FB cmp dword ptr ds:[ebx],FBB2B8B8
0821515E 0F84 0C4B0000 je 08219C70
08215164 60 pushad
08215165 7C 03 jl short 0821516A
08215167 EB 03 jmp short 0821516C
可以直接把082150AC以上的幾個跳轉NOP掉,這樣原先ImportREC無法識別的GetModuleHandleA等特殊函式就變成普通函式來處理了。SVK反脫殼(註冊)函式現在不需要處理,後面的跳轉也不能NOP,否則會出錯的。
為了“照顧”反脫殼(註冊)函式,最後修改如下:
08214DA7 E9 0A030000 jmp 082150B6
08215107 EB 5B jmp 08215164
修改之後這些特殊函式在08216AB0處就自動還原成正確函式寫入地址了。
RegMedical.exe的特殊函式如下:
001141A8 ? 0000 082733FC //GetModuleHandleA
001141B8 ? 0000 08272A23 //GetCommandLineA
00114258 ? 0000 082733FC //GetModuleHandleA
0011432C ? 0000 0827B008 //GetVersionExA
00114330 ? 0000 0827AC83 //GetVersion
00114358 ? 0000 082733FC //GetModuleHandleA
――――――――――――――――――――――――
3、SVK反脫殼(註冊)函式 這幾個函式最後進入程式處理。
082191E1 83C4 04 add esp,4
082191E4 890F mov dword ptr ds:[edi],ecx//SVK反脫殼(註冊)函式
082191E6 E8 02000000 call 082191ED
本程式共有三個SVK反脫殼(註冊)函式:
FThunk: 001148B4 NbFunc: 00000003
0 001148B4 ? 0000 082785D2
0 001148B8 ? 0000 08278098
0 001148BC ? 0000 08276FC4
―――――――――――――――――――――――――――――――――
二、ESP定律,走至偽OEP。模擬Stolen Code
輸入表處理結束後程式當然要跳向OEP啦。我再次使用ESP定律,當然這個程式也可以在CODE段下記憶體斷點走到偽OEP。也可以直接Ctrl+F:jmp dword ptr ss:[esp-4],找到飛天一躍的地方。但推薦使用ESP定律的方法,這樣可以看到部分變形的Stolen Code
在★0012FFB0★處的4個位元組上下 硬體訪問->Word 斷點,F9執行,斷幾次就會來到目的地啦! :-)
為何要選擇在0012FFB0處?呵呵,只是我的猜測+試驗得出的,你當然可以想其他辦法啦。
08271D45 60 pushad//中斷。F9數十次會來到以下地方
0827D1CE 58 pop eax
0827D1CF 68 EE91DFBB push BBDF91EE
0827D1D4 87E4 xchg esp,esp
0827D1D6 50 push eax ; RegMedic.004E2268//這個值可以在偽OEP處看到
0827D1D7 B8 7D946E44 mov eax,446E947D
0827D1DC 014424 04 add dword ptr ss:[esp+4],eax
0827D1E0 58 pop eax
0827D1E1 89DB mov ebx,ebx
0827D1E3 83C4 04 add esp,4
0827D1E6 87FF xchg edi,edi
0827D1E8 FF6424 FC jmp dword ptr ss:[esp-4]; 004E266B//GO!飛向光明之巔!:-)
在偽OEP處看看相關暫存器和堆疊資料:EBP=0012FFB4 ESP=0012FFC0 EAX=004E2268
SVKP 的Stolen Code一般不多,根據以上資料和殼中程式碼處理部分,補上OEP處的Stolen Code
004E2660 55 push ebp//在這兒用LordPE糾正ImageSize後完全DUMP這個程式
004E2661 8BEC mov ebp,esp
004E2663 83C4 F4 add esp,-0C
004E2666 B8 68224E00 mov eax,004E2268//補上的Stolen Code :-)
004E266B E8 A443F2FF call RegMedic.00406A14//偽OEP
004E2670 A1 D4B94F00 mov eax,dword ptr ds:[4FB9D4]
004E2675 8B00 mov eax,dword ptr ds:[eax]
004E2677 E8 8CC2F6FF call RegMedic.0044E908
004E267C A1 D4B94F00 mov eax,dword ptr ds:[4FB9D4]
004E2681 8B00 mov eax,dword ptr ds:[eax]
004E2683 BA AC264E00 mov edx,RegMedic.004E26AC; ASCII "Registry Medic"
執行ImportREC,設定“啟用除錯許可權”的選項,選擇這個程式。把OEP改為000E2660、RVA=00114150、Size=000007B4,點“Get Import”,呵呵,除了3個SVK反脫殼(註冊)函式其他的全部是有效的!FixDump。
―――――――――――――――――――――――――――――――――
三、修正 SVK 反脫殼(註冊)函式
程式現在還是無法正常執行的,別忘了還有3個SVK函式沒有修復。
0 001148B4 ? 0000 082785D2
0 001148B8 ? 0000 08278098
0 001148BC ? 0000 08276FC4
在這幾個地方下 記憶體 斷點,很容易就找到呼叫的地方:
0044FB78 FF25 BC485100 jmp dword ptr ds:[5148BC]
0044FB80 FF25 B8485100 jmp dword ptr ds:[5148B8]
0044FB88 FF25 B4485100 jmp dword ptr ds:[5148B4]
把這幾個修改為:
0044FB78 C3 retn
0044FB80 C3 retn
0044FB88 C3 retn
OK,程式已經能夠執行了。比較幸運的是這個程式沒有使用分段解密。
―――――――――――――――――――――――――――――――――
四、破解
雖然程式能夠執行了,但提示Trail Expired,彈出大大的註冊框讓偶註冊。呵呵,看來註冊部分沒用SVK的。
使用者名稱:@ fly @
試煉碼:13572-46890-12135-20040-03080-24689-123
――――――――――――――――――――――――
根據提示資訊,很容易找到註冊核心的地方。
004E1294 8B45 F4 mov eax,dword ptr ss:[ebp-C]//[ebp-C]=@ fly @
004E1297 E8 8C2CF2FF call dumped_.00403F28
004E129C 83F8 06 cmp eax,6//使用者名稱至少6位
004E129F 0F8C F0000000 jl dumped_.004E1395
004E12A5 8B45 F8 mov eax,dword ptr ss:[ebp-8]//[ebp-8]=試煉碼
004E12A8 E8 7B2CF2FF call dumped_.00403F28
004E12AD 83F8 21 cmp eax,21//試煉碼至少33位
004E12B0 7C 1D jl short dumped_.004E12CF
004E12B2 8B45 FC mov eax,dword ptr ss:[ebp-4]
004E12B5 E8 CE0A0000 call dumped_.004E1D88//黑名單檢測
黑名單:Cindy J. Leonheardt、[DJ]neo 呵呵,希望以後不要加上 fly :-)
004E12BA 84C0 test al,al
004E12BC 75 11 jnz short dumped_.004E12CF//是黑名單上的就直接OVER :oops:
004E12BE 8B55 F4 mov edx,dword ptr ss:[ebp-C]
004E12C1 B8 F4134E00 mov eax,dumped_.004E13F4
004E12C6 E8 492FF2FF call dumped_.00404214//檢測使用者名稱中有無 @ 這個字元
004E12CB 85C0 test eax,eax
004E12CD 75 45 jnz short dumped_.004E1314//沒有@就OVER :oops:
004E12CF 8D45 EC lea eax,dword ptr ss:[ebp-14]
004E12D2 BA 00144E00 mov edx,dumped_.004E1400
//ASCII "Registration failed. Please try again!" BAD BOY! :-(
004E130A E8 8960F2FF call <jmp.&user32.MessageBoxA>//呵呵,Please try again!
004E130F E9 B0000000 jmp dumped_.004E13C4
004E1314 8B55 F8 mov edx,dword ptr ss:[ebp-8]
004E1317 8B45 F4 mov eax,dword ptr ss:[ebp-C]
004E131A E8 91A9FAFF call dumped_.0048BCB0
004E131F E8 C4B4FAFF call dumped_.0048C7E8//運算、比較註冊碼
004E1324 A1 D4B74F00 mov eax,dword ptr ds:[4FB7D4]
004E1329 8038 00 cmp byte ptr ds:[eax],0//判斷[4FB7D4]處標誌
004E132C 74 25 je short dumped_.004E1353
004E132E A1 58B84F00 mov eax,dword ptr ds:[4FB858]
004E1333 8338 00 cmp dword ptr ds:[eax],0//判斷[4FB858]處標誌
004E1336 74 0C je short dumped_.004E1344
004E1338 A1 58B84F00 mov eax,dword ptr ds:[4FB858]
004E133D 8B00 mov eax,dword ptr ds:[eax]
004E133F E8 68D1FFFF call dumped_.004DE4AC
004E1344 8D45 EC lea eax,dword ptr ss:[ebp-14]
004E1347 BA 30144E00 mov edx,dumped_.004E1430
//ASCII "Thank you for registering Registry Medic." 呵呵,勝利女神!:-)
004E134C E8 EF29F2FF call dumped_.00403D40
004E1351 EB 0D jmp short dumped_.004E1360
004E1353 8D45 EC lea eax,dword ptr ss:[ebp-14]
004E1356 BA 00144E00 mov edx,dumped_.004E1400
//ASCII "Registration failed. Please try again!" BAD BOY! :-(
直接看註冊碼的比較部分吧: :-)
0048B300 8B45 D8 mov eax,dword ptr ss:[ebp-28]//EAX=50e8c2d4bc92
0048B303 8B55 CC mov edx,dword ptr ss:[ebp-34]//EDX=135724689012
0048B306 E8 2D8DF7FF call dumped_.00404038//比較註冊碼前12位
0048B30B 75 11 jnz short dumped_.0048B31E
0048B30D 8B45 D4 mov eax,dword ptr ss:[ebp-2C]//[ebp-2C]=123
0048B310 8B55 D0 mov edx,dword ptr ss:[ebp-30]//[ebp-30]=2db
0048B313 E8 208DF7FF call dumped_.00404038//比較註冊碼最後3位,根據前30位得出
0048B318 75 04 jnz short dumped_.0048B31E
0048B31A C645 F7 01 mov byte ptr ss:[ebp-9],1//置成功標誌位
0048B31E 33C0 xor eax,eax
0048B320 5A pop edx
0048B321 59 pop ecx
0048B322 59 pop ecx
0048B323 64:8910 mov dword ptr fs:[eax],edx
0048B326 68 38B34800 push dumped_.0048B338
0048B32B E8 5048FCFF call dumped_.0044FB80
0048B330 C3 retn
―――――――――――――――――――――――――――――――――
【註冊資訊儲存】:
註冊資訊和時間資訊儲存在登錄檔中的2個地方:
[HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{B087CE89-A8EE-4890-91E7-696B3F749500}]
"AppIdK"="CA000DFE903977C2EB7C-5CD3A51B5BED33B772DB-316841B94D9A0C-50E8C2D4BC921352004003080246892DB"
[HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{0C985599-3A7C-4D1D-9D73-B6BBC812D950}]
"AppIdK"="CA000DFE903977C2EB7C-5CD3A51B5BED33B772DB-316841B94D9A0C-50E8C2D4BC921352004003080246892DB"
―――――――――――――――――――――――――――――――――
【整 理】:
使用者名稱:@ fly @
註冊碼:50E8C-2D4BC-92135-20040-03080-24689-2DB
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ _ , 青春都一晌
( /~ / ~-._ |
`\ _/ ~ ) 忍把浮名
_-~~~-.) )__/;;,. _ //'
/'_, --~ ~~~- ,;;___( (.-~~~-. 換了破解輕狂
`~ _( ,_..-- ( ,;'' / ~-- /._`
/~~//' /' `~ ) /--.._, )_ `~
" `~" " `" /~'` `\~~
" " "~' ""
Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]
2004-03-12 14:00
相關文章
- Krypton
0.5加殼程式脫殼及輸入表修復記2004-10-06
- 淺談DBPE2.33脫殼修復2015-11-15
- 菜鳥脫 UltraFXP 0.9941 殼( SVKP )+ 破解2015-11-15
- 淺談被加殼ELF檔案的DUMP修復2020-08-19
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- 寫給新手
- 淺談脫殼方法2004-12-18
- 淺談SVKP 1.3X SDK stolen code 的找回2015-11-15
- 老妖的 C32Asm V0.4.12 脫殼+修復+破解2015-11-15ASM
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- Blaze Media Pro5.05脫殼+基本修復CC(int3)+破解2015-11-15
- HTMLZip脫殼後的Import Table的修復 (750字)2001-02-10HTMLImport
- 殼的工作原理脫殼2013-04-10
- 用Armadillo標準加殼的程式的脫殼和引入表修復方案---OLLYDBG (8千字)2015-11-15
- ASProtect 1.23RC4之System Cleaner
4.91d脫殼修復and破解2015-11-15
- 用OD對Aspr加殼程式的手動脫殼及修復 (7千字)2015-11-15
- MySQL Manager 2.8.0.1脫殼破解手記破解分析2004-11-03MySql
- jdpack的脫殼及破解 (5千字)2002-06-25
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- 某殼分析+修復(二)2018-05-14
- “天音怒放”手動脫殼及破解2015-11-15
- 登錄檔醫生(Registry Medic Version 2.43)破解記錄2003-07-25
- 幻影 V2.33 脫殼+修復――dbpe.exe主程式2015-11-15
- 偽 SVK Protector 1.32 脫殼+修復――SVK Protector
DEMO 1.32 主程式2015-11-15
- ASProtect 1.23
b18脫殼淺談 (5千字)2015-11-15
- Armadillo3.60
加殼的EXE檔案脫殼全過程2004-09-08
- VBExplorer.exe脫殼教程
附脫殼指令碼2015-11-15指令碼
- International CueClub主程式脫殼(Softwrap殼)2004-09-12
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- 談談如何使用加殼保護自己的軟體不被常用方法脫殼(2千字)2000-10-10
- 淺談被加殼ELF的除錯2020-08-19除錯
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 夢幻Ollydbg ―― 淺談 ACProtect V1.09 Pro
的反跟蹤And脫殼2015-11-15
- 脫殼基本知識2015-11-15
- SoftDefender主程式脫殼2015-11-15
- iOS應用程式的脫殼實現原理淺析2019-03-04iOS
- 十、iOS逆向之《越獄砸殼/ipa脫殼》2021-03-18iOS
- C32Asm外殼脫殼分析筆記2015-11-15ASM筆記