|
标题:新手练习:yoda's Protector V1.3手动脱壳 尝试脱过这系列工具的人应该有个印象. 不知道大家是怎么对付它的,我第一次接触这系列软件时是这么脱下来的.在我一步一步的脱下来后,反复的针对每一层壳的脱壳练习中,发现可以不用脚本和不用脱壳机来脱,直接让它一次脱完!爽歪歪!(我在新手区单独发贴问过上面这些壳的脱法,在这谢谢热心的坛友们.后来用工具解决了,可感觉不太爽,就反复的OD单步跟,新手不好当呀.当然,经过反复的练习,那伪装壳AHTeam EP Protector V0.3-V0.41,UPX 0.89.6 - 1.02 / 1.05 - 1.24和UPX$HiT 0.0.1 ->dj-siba都可以让它裸衣了,不然就写不出这篇有长有臭的DD) 说真的,当我发现我能用OD完整脱掉它时,真的很开心,虽然这壳不难,但对于我这种新手来说,是个好的练习壳.写这文的目的:除了分享个中快乐之外就是交流了,'外衣''内衣'等说法仅个人看法,如有不对的地方忘多多指正! 好了
首先: OD设置: ①调试设置:忽略所有异常! ②插件HideOD,选上自动隐藏和去掉OllyDbg调试标示 其次把程序载入OD: 两次Alt+M 第一次Alt+M 这里F2下断,然后F9运行 Memory map, 条目 14 地址=0045B000 大小=00002000 (8192.) 属主=Q宠猪猪?00400000 区段=.rsrc 包含=数据,资源 类型=Imag 01001002 访问=R 初始访问=RWE 第二次Alt+M 这里F2下断,然后F9运行 Memory map, 条目 13 地址=0043E000 大小=0001D000 (118784.) 属主=Q宠猪猪?00400000 区段=ZCode 包含=代码 类型=Imag 01001008 访问=RW CopyOnWr 初始访问=RWE 停在这里,这里没什么好说的,F8 0045A058 B8 20C24500 mov eax, 0045C220 0045A05D FFE0 jmp eax 0045A05F 76 61 jbe short 0045A0C2 0045A061 61 popad 0045A062 61 popad 0045A063 E1 55 loopde short 0045A0BA N个F8后到了这里 0045C200 B8 57A04500 mov eax, 0045A057 0045C205 B9 10000000 mov ecx, 10 0045C20A 803408 61 xor byte ptr [eax+ecx], 61 `这里小跳 0045C20E ^ E2 FA loopd short 0045C20A ` 0045C210 B8 58A04500 mov eax, 0045A058 `F4,F8 几次F8后到了这里(具体的忘了,几次而已) 0045A059 BC 41A04500 mov esp, 0045A041 0045A05E B9 17000000 mov ecx, 17 0045A063 80340C DB xor byte ptr [esp+ecx], 0DB `这里小跳 0045A067 ^ E2 FA loopd short 0045A063 ` 0045A069 94 xchg eax, esp 0045A06A 90 nop 0045A06B 90 nop 0045A06C 90 nop 0045A06D FFE0 jmp eax `F4,不管它直接F8 到了这里 0045A044 45 inc ebp 0045A045 00B9 71010000 add byte ptr [ecx+171], bh 0045A04B 803408 08 xor byte ptr [eax+ecx], 8 `这里小跳 0045A04F ^ E2 FA loopd short 0045A04B ` 0045A051 ^ FFE0 jmp eax ; Q宠猪猪?00459ED0 `和上面一样F4后不管它直接F8 到了这里,嘻嘻!都很熟悉了吧! 请自由发挥吧!(我依然选择单步跟) 00459ED0 60 pushad 00459ED1 BE 00E04300 mov esi, 0043E000 00459ED6 8DBE 0030FCFF lea edi, dword ptr [esi+FFFC3000] 00459EDC 57 push edi 00459EDD 83CD FF or ebp, FFFFFFFF 00459EE0 EB 10 jmp short 00459EF2 00459EE2 90 nop 00459EE3 90 nop 00459EE4 90 nop 00459EE5 90 nop 00459EE6 90 nop 00459EE7 90 nop 00459EE8 8A06 mov al, byte ptr [esi] 00459EE8 8A06 mov al, byte ptr [esi] 00459EEA 46 inc esi 00459EEB 8807 mov byte ptr [edi], al 00459EED 47 inc edi 00459EEE 01DB add ebx, ebx 00459EF0 75 07 jnz short 00459EF9 00459EF2 8B1E mov ebx, dword ptr [esi] 00459EF4 83EE FC sub esi, -4 00459EF7 11DB adc ebx, ebx 00459EF9 ^ 72 ED jb short 00459EE8 `跳转 00459EFB B8 01000000 mov eax, 1 `F4 几次F8后到了这里 00459F61 01DB add ebx, ebx 00459F63 75 07 jnz short 00459F6C 00459F65 8B1E mov ebx, dword ptr [esi] 00459F67 83EE FC sub esi, -4 00459F6A 11DB adc ebx, ebx 00459F6C 11C9 adc ecx, ecx 00459F6E 01DB add ebx, ebx 00459F70 ^ 73 EF jnb short 00459F61 `一跳 00459F72 75 09 jnz short 00459F7D `两跳 00459F74 8B1E mov ebx, dword ptr [esi] `F4 几次F8后到了这里 00459FAD ^\77 F1 ja short 00459FA0 00459FAF 01CF add edi, ecx 00459FB1 ^ E9 38FFFFFF jmp 00459EEE `跳转 00459FB6 5E pop esi `F4 接着到了这里 00459FBE 8A07 mov al, byte ptr [edi] 00459FC0 47 inc edi 00459FC1 2C E8 sub al, 0E8 00459FC3 3C 01 cmp al, 1 00459FC5 ^ 77 F7 ja short 00459FBE `跳转 00459FC7 803F 05 cmp byte ptr [edi], 5 00459FCA ^ 75 F2 jnz short 00459FBE `跳转 00459FCC 8B07 mov eax, dword ptr [edi] `F4 继续往下走 00459FC3 3C 01 cmp al, 1 00459FC5 ^ 77 F7 ja short 00459FBE 00459FC7 803F 05 cmp byte ptr [edi], 5 00459FCA ^ 75 F2 jnz short 00459FBE 00459FCC 8B07 mov eax, dword ptr [edi] 00459FCE 8A5F 04 mov bl, byte ptr [edi+4] 00459FD1 66:C1E8 08 shr ax, 8 00459FD5 C1C0 10 rol eax, 10 00459FD8 86C4 xchg ah, al 00459FDA 29F8 sub eax, edi 00459FDC 80EB E8 sub bl, 0E8 00459FDF 01F0 add eax, esi 00459FE1 8907 mov dword ptr [edi], eax 00459FE3 83C7 05 add edi, 5 00459FE6 89D8 mov eax, ebx 00459FE8 ^ E2 D9 loopd short 00459FC3 `跳转 00459FEA 8DBE 00700500 lea edi, dword ptr [esi+57000] `F4 继续走 0045A02A 09C0 or eax, eax 0045A02C 74 07 je short 0045A035 0045A02E 8903 mov dword ptr [ebx], eax 0045A030 83C3 04 add ebx, 4 0045A033 ^ EB D8 jmp short 0045A00D 0045A035 FF96 E0B00500 call dword ptr [esi+5B0E0] 0045A03B 61 popad `F4,F8跟 0045A03C - E9 2772FAFF jmp 00401268 `直接到OEP哦 0045A041 B0 D0 mov al, 0D0 0045A043 9E sahf 0045A044 45 inc ebp 一次F8后到了这里 00401268 68 F0144000 push 004014F0 ; ASCII "VB5!6&vb6chs.dll" 0040126D E8 F0FFFFFF call 00401262 ; jmp 到 MSVBVM60.ThunRTMain `F7 00401272 0000 add byte ptr [eax], al F7后到了这里 00401262 - FF25 B8104000 jmp dword ptr [4010B8] ; MSVBVM60.ThunRTMain 00401268 68 F0144000 push 004014F0 ; ASCII "VB5!6&vb6chs.dll" 0040126D E8 F0FFFFFF call 00401262 ; jmp 到 MSVBVM60.ThunRTMain 直接F8到了出口 6600357C > 55 push ebp `DUMP 6600357D 8BEC mov ebp, esp 6600357F 6A FF push -1 最后LOADPE修复一下,入口点改为:1268,保存.重建PE.(重建可以省掉地,不重建时381K,重建后366K) PEID查一下脱下来的程序,显示:Microsoft Visual Basic 5.0 / 6.0 |
|
---|