Armadillo V4.40主程序脱壳
下载页面: http://siliconrealms.com
软件大小: 2.1 M
软件简介: SoftwarePassport is a powerful software protection system, using the proven Armadillo engine to wrap around your program like an armored shell, defending your work from pirates and program crackers with state-of-the-art encryption, data compression, and other security features. It allows you to design and add a complete software protection and registration-key system to your existing programs in five minutes or less, with no changes to your program's code! And it works with any language that produces a 32-bit Windows EXE, SCR, DLL, or OCX file.
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
【调试环境】:WinXP、OllyDBD、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――
【脱壳过程】:
此教程heXer创作,fly整理。
主要利用脚本来完成脱壳,步骤繁琐,不适合新手练习。
Get.eXe.PE.Information.osc、DebugActiveProcess.osc、Armadillo.fiXed.IT.osc、WaitForDebugEvent.osc必须放同一目录下,Disasm.dll放入目标程序Armadillo.exe目录下。
―――――――――――――――――――――――――――――――――
一、DebugActiveProcess 设置OllyDBD忽略所有异常选项。添加或略异常范围:00000001-FFFFFFFE
载入Armadillo.exe,用IsDebug插件去掉OllyDBD的调试器标志。
004CD000 60 pushad
//进入OllyDbg后暂停在这
004CD001 E8 00000000 call 004CD006
004CD006 5D pop ebp
004CD007 50 push eax
004CD008 51 push ecx
004CD009 0FCA bswap edx
004CD00B F7D2 not edx
004CD00D 9C pushfd
004CD00E F7D2 not edx
004CD010 0FCA bswap edx
004CD012 EB 0F jmp short 004CD023
每次运行脚本前必须清除以前的所有断点! ★
现在运行DebugActiveProcess.osc
子进程ID=000000B44,开始4个字节EP Code=00000E860
“确定”后,此脚本完成任务,保留此OllyDBG不动。
此时系统资源耗用厉害,有点卡,不要急,否则就不必脱此壳了。 ―――――――――――――――――――――――――――――――――
二、Armadillo.fiXed.IT 新运行一个OllyDBG,Attach上ID=000000B44的子进程Armadillo.exe
7C921231 C3 retn
//暂停在 ntdll.DbgBreakPoint
运行Armadillo.fiXed.IT.osc,脚本提示:
“确定”后F12,OllyDBG暂停在EP死循环处
004CD000 EB FE jmp short 004CD000
//暂停
还原EP Code的EBFE为60E8,Resume脚本 ★
00F9D330 FF15 1861FA00 call dword ptr ds:[FA6118] ; kernel32.VirtualProtect
00F9D336 A0 BC00FB00 mov al,byte ptr ds:[FB00BC]
//脚本运行完毕暂停在这里
在Armadillo.fiXed.IT.osc目录下脚本自动dump出一个文件:SaveIat00102B010.bin
此文件保存的就是所有乱序前的正确函数地址!
00F9D33B 8885 14A9FFFF mov byte ptr ss:[ebp+FFFFA914],al
00F9D341 0FB685 14A9FFFF movzx eax,byte ptr ss:[ebp+FFFFA914]
00F9D348 85C0 test eax,eax
00F9D34A 74 1D je short 00F9D369
00F9D34C 6A 00 push 0
00F9D34E FFB5 CCB0FFFF push dword ptr ss:[ebp+FFFFB0CC]
00F9D354 8B85 0CD8FFFF mov eax,dword ptr ss:[ebp-27F4]
00F9D35A 0385 BCB0FFFF add eax,dword ptr ss:[ebp+FFFFB0BC]
00F9D360 50 push eax
00F9D361 E8 87110000 call 00F9E4ED
//解密CALL ★
看堆栈:
00129500 00401000 地址
00129504 00049001 大小 → 修改为:49000 ★
其实就是解密PE header下面区段的代码
但是此区段的Size为49000,这里多了1,将导致其下区段被加密,所以我们要修改这里为49000
在数据窗口里定位00401000,F8步过上面CALL时会发现00401000段的代码已经全部解密出来了!
00F9D366 83C4 0C add esp,0C
00F9D369 8B85 FCD7FFFF mov eax,dword ptr ss:[ebp-2804]
00F9D36F 8BB5 0CD8FFFF mov esi,dword ptr ss:[ebp-27F4]
00F9D375 2B70 34 sub esi,dword ptr ds:[eax+34]
00F9D378 E8 542E0000 call 00FA01D1
00F9D37D F7D8 neg eax
00F9D37F 1BC0 sbb eax,eax
00F9D381 25 00100000 and eax,1000
00F9D386 03F0 add esi,eax
00F9D388 89B5 C4B0FFFF mov dword ptr ss:[ebp+FFFFB0C4],esi
00F9D38E 83A5 C8B0FFFF 00 and dword ptr ss:[ebp+FFFFB0C8],0
00F9D395 EB 0D jmp short 00F9D3A4
下面Armadillo就要对输入表完成Import Table Elimination
把乱序后的函数写入程序中各呼叫地址处。
00F9D397 8B85 C8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0C8]
00F9D39D 40 inc eax
00F9D39E 8985 C8B0FFFF mov dword ptr ss:[ebp+FFFFB0C8],eax
00F9D3A4 8B85 C8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0C8]
00F9D3AA 8B8D 24D9FFFF mov ecx,dword ptr ss:[ebp-26DC]
//[ebp-26DC]保存的是呼叫IAT的地址+2的表。 不好命名,经大家商量凑个名字给这个表:
//Table which Record all of IAT Caller address in Armadillo +2 ★
00F9D3B0 833C81 00 cmp dword ptr ds:[ecx+eax*4],0
00F9D3B4 0F84 90000000 je 00F9D44A
00F9D3BA 8B85 C8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0C8]
00F9D3C0 8B8D 24D9FFFF mov ecx,dword ptr ss:[ebp-26DC]
00F9D3C6 8B95 0CD8FFFF mov edx,dword ptr ss:[ebp-27F4]
00F9D3CC 031481 add edx,dword ptr ds:[ecx+eax*4]
00F9D3CF 8995 B8B0FFFF mov dword ptr ss:[ebp+FFFFB0B8],edx
00F9D3D5 8B85 B8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0B8]
00F9D3DB 8B00 mov eax,dword ptr ds:[eax]
00F9D3DD 8985 B4B0FFFF mov dword ptr ss:[ebp+FFFFB0B4],eax
00F9D3E3 81BD B4B0FFFF 9090>cmp dword ptr ss:[ebp+FFFFB0B4],909090>
00F9D3ED 74 56 je short 00F9D445
00F9D3EF 8B85 B4B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0B4]
00F9D3F5 2B85 C4B0FFFF sub eax,dword ptr ss:[ebp+FFFFB0C4]
00F9D3FB 8985 B4B0FFFF mov dword ptr ss:[ebp+FFFFB0B4],eax
00F9D401 FFB5 B4B0FFFF push dword ptr ss:[ebp+FFFFB0B4]
00F9D407 8B85 C8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0C8]
00F9D40D 33D2 xor edx,edx
00F9D40F 6A 1B push 1B
00F9D411 59 pop ecx
00F9D412 F7F1 div ecx
00F9D414 FF1495 9867FA00 call dword ptr ds:[edx*4+FA6798]
00F9D41B 59 pop ecx
00F9D41C 8985 B4B0FFFF mov dword ptr ss:[ebp+FFFFB0B4],eax
00F9D422 8B85 B4B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0B4]
00F9D428 8B8D E4D7FFFF mov ecx,dword ptr ss:[ebp-281C]
//[ebp-281C]保存的是乱序后的函数表。Table with Rand order Function ★
00F9D42E 8D0481 lea eax,dword ptr ds:[ecx+eax*4]
00F9D431 8985 B4B0FFFF mov dword ptr ss:[ebp+FFFFB0B4],eax
00F9D437 8B85 B8B0FFFF mov eax,dword ptr ss:[ebp+FFFFB0B8]
00F9D43D 8B8D B4B0FFFF mov ecx,dword ptr ss:[ebp+FFFFB0B4]
00F9D443 8908 mov dword ptr ds:[eax],ecx
00F9D445 E9 4DFFFFFF jmp 00F9D397
00F9D44A A0 BC00FB00 mov al,byte ptr ds:[FB00BC]
//这里处理结束,下断,Shift+F9中断下来。
设置0044A000为完整权限,把SaveIat00102B010.bin里面的有序地址全部粘贴到0044A000处。
注意,我们要先去掉非函数地址的数据。
00000370 1E 31 32 76 33 73 F8 00 30 74 F8 00 69 73 F8 00
自0X374后就可以全部删除了。
0044A000 23 C1 DC 77 10 CC DC 77 1B 76 DA 77 E7 EB DA 77
0044A010 E5 ED DA 77 F4 EA DA 77 83 78 DA 77 F0 6B DA 77
0044A020 C3 CA DC 77 71 73 F8 00 A5 45 1B 5D 40 D4 17 5D
0044A030 DD 15 19 5D 5B BB 17 5D D8 72 F8 00 A6 6C EF 77
0044A040 C0 6D EF 77 6C 9B EF 77 2C B5 EF 77 D5 5F EF 77
0044A050 DE 82 EF 77 55 CE EF 77 D7 8D EF 77 F1 5F EF 77
0044A060 0B 5D EF 77 EE D1 EF 77 60 9C EF 77 89 BD EF 77
0044A070 07 9D EF 77 0C D1 EF 77 A0 59 EF 77 59 5C EF 77
0044A080 A7 5B EF 77 10 5E EF 77 3B 6A EF 77 21 A8 EF 77
0044A090 80 73 F8 00 C1 C9 80 7C 94 22 82 7C AC 92 80 7C
0044A0A0 2F 08 81 7C 29 B5 80 7C A9 CC 80 7C A1 97 83 7C
0044A0B0 C7 A0 80 7C AD 9C 80 7C FC B7 80 7C 8D B7 80 7C
0044A0C0 6C 94 80 7C 8F 0C 81 7C 82 00 81 7C 19 01 81 7C
0044A0D0 37 97 80 7C A2 CA 81 7C A1 9F 80 7C ED 10 92 7C
0044A0E0 05 10 92 7C 8A 18 93 7C CB CA 81 7C A2 29 82 7C
0044A0F0 67 CC 80 7C CF C6 80 7C 65 A0 80 7C F1 BA 80 7C
0044A100 B1 C7 80 7C 54 2A 82 7C 51 28 81 7C B3 9E 80 7C
0044A110 4C F0 81 7C 81 9A 80 7C 14 9B 80 7C 29 29 81 7C
0044A120 10 11 81 7C 69 10 81 7C A9 2C 81 7C CF C6 80 7C
0044A130 78 2C 81 7C 23 CC 81 7C 5F 48 81 7C 3F DC 81 7C
0044A140 8A 2B 86 7C C4 CE 80 7C 2B 2E 83 7C ED 09 93 7C
0044A150 FD 79 93 7C 3D 04 93 7C D4 05 93 7C AB 14 81 7C
0044A160 8D 2C 81 7C EE 1E 80 7C 0D E0 80 7C 16 1E 80 7C
0044A170 40 7A 95 7C 6B 17 80 7C AE 94 83 7C 53 00 83 7C
0044A180 24 1A 80 7C 0E 18 80 7C A6 0D 81 7C B7 2B 82 7C
0044A190 CF 21 82 7C 59 35 81 7C D7 EF 80 7C 5C E8 81 7C
0044A1A0 01 6A 82 7C B9 8C 83 7C 80 A4 80 7C CB D8 81 7C
0044A1B0 58 CD 80 7C 87 1F 82 7C 4D 11 86 7C 3F EB 80 7C
0044A1C0 67 23 80 7C 31 03 93 7C 2A E9 81 7C 77 9B 80 7C
0044A1D0 42 24 80 7C 77 1D 80 7C 28 AC 80 7C 57 B3 80 7C
0044A1E0 7C 36 81 7C 9F 0F 81 7C 6A 48 81 7C A9 26 82 7C
0044A1F0 E6 2B 81 7C 43 99 80 7C 2A E8 81 7C 50 F8 81 7C
0044A200 93 D2 80 7C DF 06 86 7C 4E A3 80 7C 33 73 F8 00
0044A210 80 0E 61 7D 55 0B 61 7D 10 73 F8 00 F0 BE D1 77
0044A220 65 C4 D1 77 7D BC D1 77 B3 C7 D3 77 4B BE D1 77
0044A230 C8 BD D1 77 8E BD D1 77 76 BD D1 77 9D 86 D1 77
0044A240 C7 86 D1 77 9E C5 D1 77 88 C1 D1 77 EC DB D1 77
0044A250 D4 B6 D1 77 2F BB D1 77 1B C0 D1 77 6C C9 D1 77
0044A260 42 8C D1 77 9D 8F D1 77 3E F1 D2 77 4F 02 D3 77
0044A270 05 C5 D1 77 3D 02 D3 77 5D 94 D1 77 33 B9 D1 77
0044A280 4C 1F D3 77 1A 00 D3 77 2F B7 D1 77 85 CB D1 77
0044A290 EA E8 D1 77 D8 FF D2 77 0D D6 D1 77 A2 BD D1 77
0044A2A0 3C 21 D3 77 71 BE D1 77 60 DA D1 77 50 62 D2 77
0044A2B0 55 E6 D1 77 16 48 D2 77 2E 8C D1 77 B5 37 D2 77
0044A2C0 9A F3 D2 77 DE F2 D2 77 E2 16 D2 77 80 FD D1 77
0044A2D0 DF 1A D3 77 0E 97 D1 77 92 0D D3 77 61 C6 D3 77
0044A2E0 DA 5E D2 77 09 B6 D1 77 AE B6 D1 77 57 C2 D1 77
0044A2F0 78 8E D1 77 DA C6 D3 77 1D B6 D1 77 9F 03 D3 77
0044A300 B2 C2 D1 77 11 12 D2 77 EA DA D1 77 EE D4 D1 77
0044A310 24 13 D2 77 3E 0B D2 77 8C 14 D2 77 5E 02 D2 77
0044A320 92 0A D2 77 A4 D8 D1 77 F9 D7 D1 77 24 15 D3 77
0044A330 42 10 D2 77 9C FA D2 77 F6 8B D1 77 B8 96 D1 77
0044A340 EA 04 D5 77 6C BF D1 77 43 F5 D2 77 1C B1 D3 77
0044A350 A7 73 F8 00 50 1A BD 77 FF 19 BD 77 BA 18 BD 77
0044A360 76 73 F8 00 D4 4F A2 71 33 73 F8 00 D8 7C 33 76
0044A370 1E 31 32 76 00 00 00 00 00 40 FF 00 00 FF FF 00
你也可以放在其他可用的空白处,但是分析发现44A000处是程序加壳前存放输入表的地方,正好还原吧。
接着我们来修复这些乱序的输入表函数,Patch代码如下。
00F9D44A 60 pushad
00F9D44B 8BB5 E4D7FFFF mov esi,dword ptr ss:[ebp-281C]
//Table with Rand order Function
00F9D451 8BBD 24D9FFFF mov edi,dword ptr ss:[ebp-26DC]
//Table which Record all of IAT Caller address in Armadillo +2
00F9D457 833F 00 cmp dword ptr ds:[edi],0
00F9D45A 74 2E je short 00F9D48A
00F9D45C 8B07 mov eax,dword ptr ds:[edi]
00F9D45E 05 00004000 add eax,400000
00F9D463 8B10 mov edx,dword ptr ds:[eax]
00F9D465 BB 00A04400 mov ebx,44A000
//44A000:粘贴的有序函数地址表
00F9D46A 81FA 90909090 cmp edx,90909090
00F9D470 74 13 je short 00F9D485
00F9D472 8B12 mov edx,dword ptr ds:[edx]
00F9D474 3B13 cmp edx,dword ptr ds:[ebx]
00F9D476 74 0B je short 00F9D483
00F9D478 83C3 04 add ebx,4
00F9D47B 81FB 78A34400 cmp ebx,44A378
//44A378:有序函数地址表结束地址
00F9D481 7C F1 jl short 00F9D474
00F9D483 8918 mov dword ptr ds:[eax],ebx
//替换成指向有序函数的地址
00F9D485 83C7 04 add edi,4
00F9D488 EB CD jmp short 00F9D457
00F9D48A 61 popad
00F9D48B 90 nop
//这里下断,循环出口
OllyDBG二进制代码复制:
60 8B B5 E4 D7 FF FF 8B BD 24 D9 FF FF 83 3F 00 74 2E 8B 07 05 00 00 40 00 8B 10 BB 00 A0 44 00
81 FA 90 90 90 90 74 13 8B 12 3B 13 74 0B 83 C3 04 81 FB 78 A3 44 00 7C F1 89 18 83 C7 04 EB CD
61 90
F9在00F9D489中断后乱序输入表修复完毕。
运行ImportREC,RVA=0004A000,Size=00000374,获取输入表,Cut掉几个填充在DLL间的垃圾数据,保存树文件。
因为下面Armadillo还要再对代码段加密,所以此时运行LordPE完全dump出此进程! ―――――――――――――――――――――――――――――――――
三、OEP 撤销上面patch的代码,把EIP重新定位在00F9D44A处,我们来找OEP
Ctrl+G: CreateThread,在CreateThread函数末尾下断,Shift+F9中断后取消断点。
00F8C494 FF15 5C61FA00 call dword ptr ds:[FA615C] ; kernel32.CreateThread
00F8C49A 50 push eax
//返回这里
00F8C49B FF15 4C62FA00 call dword ptr ds:[FA624C] ; kernel32.CloseHandle
00F8C4A1 5F pop edi
00F8C4A2 5E pop esi
00F8C4A3 C9 leave
00F8C4A4 C3 retn
00F9F8A6 E8 40CBFEFF call 00F8C3EB
00F9F8AB 59 pop ecx
00F9F8AC BE 98FAFA00 mov esi,0FAFA98
00F9F8B1 8BCE mov ecx,esi
00F9F8B3 E8 B292FDFF call 00F78B6A
00F9F8B8 84C0 test al,al
00F9F8BA 75 09 jnz short 00F9F8C5
00F9F8BC 6A 01 push 1
00F9F8BE 8BCE mov ecx,esi
00F9F8C0 E8 83E2FDFF call 00F7DB48
00F9F8C5 C705 E0C0FA00 D8CF>mov dword ptr ds:[FAC0E0],0FACFD8
00F9F8CF B9 00ECFA00 mov ecx,0FAEC00
00F9F8D4 E8 44590000 call 00FA521D
00F9F8D9 53 push ebx
00F9F8DA E8 3E590000 call 00FA521D
00F9F8DF 59 pop ecx
00F9F8E0 33D2 xor edx,edx
00F9F8E2 8955 DC mov dword ptr ss:[ebp-24],edx
00F9F8E5 895D FC mov dword ptr ss:[ebp-4],ebx
00F9F8E8 A0 BC00FB00 mov al,byte ptr ds:[FB00BC]
00F9F8ED 8845 C8 mov byte ptr ss:[ebp-38],al
00F9F8F0 84C0 test al,al
00F9F8F2 75 4A jnz short 00F9F93E
00F9F8F4 A1 E400FB00 mov eax,dword ptr ds:[FB00E4]
00F9F8F9 8B48 7C mov ecx,dword ptr ds:[eax+7C]
00F9F8FC 894D C4 mov dword ptr ss:[ebp-3C],ecx
00F9F8FF 894D D0 mov dword ptr ss:[ebp-30],ecx
00F9F902 8B0D FC00FB00 mov ecx,dword ptr ds:[FB00FC] ; Armadill.00400000
00F9F908 894D C0 mov dword ptr ss:[ebp-40],ecx
00F9F90B 8B70 50 mov esi,dword ptr ds:[eax+50]
00F9F90E 3370 44 xor esi,dword ptr ds:[eax+44]
00F9F911 3370 24 xor esi,dword ptr ds:[eax+24]
00F9F914 03F1 add esi,ecx
00F9F916 8975 D4 mov dword ptr ss:[ebp-2C],esi
00F9F919 8B98 90000000 mov ebx,dword ptr ds:[eax+90]
00F9F91F 3358 4C xor ebx,dword ptr ds:[eax+4C]
00F9F922 3358 08 xor ebx,dword ptr ds:[eax+8]
00F9F925 895D A8 mov dword ptr ss:[ebp-58],ebx
00F9F928 8D4D D0 lea ecx,dword ptr ss:[ebp-30]
00F9F92B E8 D016FDFF call 00F71000
00F9F930 33D2 xor edx,edx
00F9F932 F7F3 div ebx
00F9F934 03D6 add edx,esi
00F9F936 8955 CC mov dword ptr ss:[ebp-34],edx
00F9F939 8B12 mov edx,dword ptr ds:[edx]
00F9F93B 8955 DC mov dword ptr ss:[ebp-24],edx
00F9F93E 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF
00F9F942 EB 11 jmp short 00F9F955
00F9F944 6A 01 push 1
00F9F946 58 pop eax
00F9F947 C3 retn
00F9F948 8B65 E8 mov esp,dword ptr ss:[ebp-18]
00F9F94B 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF
00F9F94F 8B7D 08 mov edi,dword ptr ss:[ebp+8]
00F9F952 8B55 DC mov edx,dword ptr ss:[ebp-24]
00F9F955 A1 E400FB00 mov eax,dword ptr ds:[FB00E4]
00F9F95A 3150 7C xor dword ptr ds:[eax+7C],edx
00F9F95D A1 E400FB00 mov eax,dword ptr ds:[FB00E4]
00F9F962 3150 7C xor dword ptr ds:[eax+7C],edx
00F9F965 A1 E400FB00 mov eax,dword ptr ds:[FB00E4]
00F9F96A 8B88 8C000000 mov ecx,dword ptr ds:[eax+8C]
00F9F970 3348 08 xor ecx,dword ptr ds:[eax+8]
00F9F973 3348 04 xor ecx,dword ptr ds:[eax+4]
00F9F976 030D FC00FB00 add ecx,dword ptr ds:[FB00FC] ; Armadill.00400000
00F9F97C 8B17 mov edx,dword ptr ds:[edi]
00F9F97E 85D2 test edx,edx
00F9F980 75 18 jnz short 00F9F99A
00F9F982 FF77 18 push dword ptr ds:[edi+18]
00F9F985 FF77 14 push dword ptr ds:[edi+14]
00F9F988 FF77 10 push dword ptr ds:[edi+10]
00F9F98B 8B50 78 mov edx,dword ptr ds:[eax+78]
00F9F98E 3350 64 xor edx,dword ptr ds:[eax+64]
00F9F991 3350 08 xor edx,dword ptr ds:[eax+8]
00F9F994 2BCA sub ecx,edx
00F9F996 FFD1 call ecx
00F9F998 EB 1D jmp short 00F9F9B7
00F9F99A 83FA 01 cmp edx,1
00F9F99D 75 1B jnz short 00F9F9BA
00F9F99F FF77 04 push dword ptr ds:[edi+4]
00F9F9A2 FF77 08 push dword ptr ds:[edi+8]
00F9F9A5 6A 00 push 0
00F9F9A7 FF77 0C push dword ptr ds:[edi+C]
00F9F9AA 8B50 78 mov edx,dword ptr ds:[eax+78]
00F9F9AD 3350 64 xor edx,dword ptr ds:[eax+64]
00F9F9B0 3350 08 xor edx,dword ptr ds:[eax+8]
00F9F9B3 2BCA sub ecx,edx
00F9F9B5 FFD1 call ecx ; Armadill.004436E0
//飞向光明之颠! ★
00F9F9B7 8945 E4 mov dword ptr ss:[ebp-1C],eax
00F9F9BA 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
00F9F9BD 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
00F9F9C0 64:890D 00000000 mov dword ptr fs:[0],ecx
00F9F9C7 5F pop edi
00F9F9C8 5E pop esi
00F9F9C9 5B pop ebx
00F9F9CA C9 leave
00F9F9CB C3 retn
此时代码段已经被Armadillo再次加密,不必管了,上面我们已经抓取了他的解密代码。
在ImportREC里面填入OEP=000436E0,去掉“Add New Section”选项,“New Import Infos”填入RVA=0004BA50,Fix Dump。当然,可以新增区段来修复,不过0X0004BA50处是其原IAT RVA处,所以还原。 ―――――――――――――――――――――――――――――――――
四、CC 关掉所有的OllyDBG吧,重新用OllyDBG载入Armadillo.exe,还有Nanomites在等着我们去征服!
运行WaitForDebugEvent.osc,寻找修复的合适点。
004AB07B C785 78EBFFFF 0000>mov dword ptr ss:[ebp-1488],0 ; Plz Continue Fix Nanomites !
//脚本运行后暂停在这里
//①、004AB07B 第1个点 查CC表,当前引发CC处理的地址是否包含在表中
004AB085 6A FF push -1
004AB087 6A 04 push 4
004AB089 8D95 34ECFFFF lea edx,dword ptr ss:[ebp-13CC]
004AB08F 52 push edx
004AB090 E8 FB5EFDFF call Armadill.00480F90
004AB095 83C4 0C add esp,0C
004AB098 8985 4CEEFFFF mov dword ptr ss:[ebp-11B4],eax
004AB09E 8B85 4CEEFFFF mov eax,dword ptr ss:[ebp-11B4]
004AB0A4 33D2 xor edx,edx
004AB0A6 B9 1B000000 mov ecx,1B
004AB0AB F7F1 div ecx
004AB0AD 8995 48EEFFFF mov dword ptr ss:[ebp-11B8],edx
004AB0B3 8B95 34ECFFFF mov edx,dword ptr ss:[ebp-13CC]
004AB0B9 52 push edx
004AB0BA 8B85 48EEFFFF mov eax,dword ptr ss:[ebp-11B8]
004AB0C0 FF1485 B81D4E00 call dword ptr ds:[eax*4+4E1DB8]
004AB0C7 83C4 04 add esp,4
004AB0CA 8985 78EBFFFF mov dword ptr ss:[ebp-1488],eax
004AB0D0 C785 74EBFFFF 0000>mov dword ptr ss:[ebp-148C],0
004AB0DA 8B8D 48EEFFFF mov ecx,dword ptr ss:[ebp-11B8]
004AB0E0 8B148D 38434E00 mov edx,dword ptr ds:[ecx*4+4E4338]
004AB0E7 8995 54EEFFFF mov dword ptr ss:[ebp-11AC],edx
004AB0ED 8B85 74EBFFFF mov eax,dword ptr ss:[ebp-148C]
004AB0F3 3B85 54EEFFFF cmp eax,dword ptr ss:[ebp-11AC]
004AB0F9 7D 5C jge short Armadill.004AB157
004AB0FB 8B85 54EEFFFF mov eax,dword ptr ss:[ebp-11AC]
004AB101 2B85 74EBFFFF sub eax,dword ptr ss:[ebp-148C]
004AB107 99 cdq
004AB108 2BC2 sub eax,edx
004AB10A D1F8 sar eax,1
004AB10C 8B8D 74EBFFFF mov ecx,dword ptr ss:[ebp-148C]
004AB112 03C8 add ecx,eax
004AB114 898D 70EBFFFF mov dword ptr ss:[ebp-1490],ecx
004AB11A 8B95 48EEFFFF mov edx,dword ptr ss:[ebp-11B8]
004AB120 8B0495 AC424E00 mov eax,dword ptr ds:[edx*4+4E42AC]
004AB127 8B8D 70EBFFFF mov ecx,dword ptr ss:[ebp-1490]
004AB12D 8B95 78EBFFFF mov edx,dword ptr ss:[ebp-1488]
004AB133 3B1488 cmp edx,dword ptr ds:[eax+ecx*4]
004AB136 76 11 jbe short Armadill.004AB149
004AB138 8B85 70EBFFFF mov eax,dword ptr ss:[ebp-1490]
004AB13E 83C0 01 add eax,1
004AB141 8985 74EBFFFF mov dword ptr ss:[ebp-148C],eax
004AB147 EB 0C jmp short Armadill.004AB155
004AB149 8B8D 70EBFFFF mov ecx,dword ptr ss:[ebp-1490]
004AB14F 898D 54EEFFFF mov dword ptr ss:[ebp-11AC],ecx
004AB155 EB 96 jmp short Armadill.004AB0ED
004AB157 60 pushad
004AB158 33C0 xor eax,eax
004AB15A 75 02 jnz short Armadill.004AB15E
004AB15C EB 15 jmp short Armadill.004AB173
004AB183 8B0495 AC424E00 mov eax,dword ptr ds:[edx*4+4E42AC]
004AB18A 8B8D 74EBFFFF mov ecx,dword ptr ss:[ebp-148C]
004AB190 8B1488 mov edx,dword ptr ds:[eax+ecx*4]
004AB193 3B95 78EBFFFF cmp edx,dword ptr ss:[ebp-1488]
004AB199 0F85 90020000 jnz Armadill.004AB42F
//修改为ret ★
004AB1F6 8B85 48EEFFFF mov eax,dword ptr ss:[ebp-11B8]
//②、004AB1F6 第2个点 传入标志位和ECX,判断是否跳转
004AB1FC 8B0C85 A4434E00 mov ecx,dword ptr ds:[eax*4+4E43A4]
004AB203 8B95 74EBFFFF mov edx,dword ptr ss:[ebp-148C]
004AB209 8B0491 mov eax,dword ptr ds:[ecx+edx*4]
004AB20C 8985 5CEBFFFF mov dword ptr ss:[ebp-14A4],eax
004AB212 8B8D 3CECFFFF mov ecx,dword ptr ss:[ebp-13C4]
004AB218 81E1 D70F0000 and ecx,0FD7
004AB21E 898D 6CEBFFFF mov dword ptr ss:[ebp-1494],ecx
004AB224 8B95 5CEBFFFF mov edx,dword ptr ss:[ebp-14A4]
004AB22A 81E2 000000FF and edx,FF000000
004AB230 C1EA 18 shr edx,18
004AB233 8995 60EBFFFF mov dword ptr ss:[ebp-14A0],edx
004AB239 8B85 5CEBFFFF mov eax,dword ptr ss:[ebp-14A4]
004AB23F 25 FFFFFF00 and eax,0FFFFFF
004AB244 8985 64EBFFFF mov dword ptr ss:[ebp-149C],eax
004AB24A 8B8D 28ECFFFF mov ecx,dword ptr ss:[ebp-13D8]
004AB250 51 push ecx
004AB251 8B95 6CEBFFFF mov edx,dword ptr ss:[ebp-1494]
004AB257 52 push edx
004AB258 8B85 64EBFFFF mov eax,dword ptr ss:[ebp-149C]
004AB25E 50 push eax
004AB25F 8B8D 60EBFFFF mov ecx,dword ptr ss:[ebp-14A0]
004AB265 FF148D 14D84D00 call dword ptr ds:[ecx*4+4DD814]
004AB26C 83C4 0C add esp,0C
004AB26F 8985 68EBFFFF mov dword ptr ss:[ebp-1498],eax
004AB275 8B95 68EBFFFF mov edx,dword ptr ss:[ebp-1498]
004AB27B 83E2 01 and edx,1
004AB27E 85D2 test edx,edx
//修改为ret ★
004AB2AC 8B85 48EEFFFF mov eax,dword ptr ss:[ebp-11B8]
//③、004AB2AC 第3个点 跳转长度
004AB2B2 8B0C85 40424E00 mov ecx,dword ptr ds:[eax*4+4E4240]
004AB2B9 8B85 74EBFFFF mov eax,dword ptr ss:[ebp-148C]
004AB2BF 33D2 xor edx,edx
004AB2C1 BE 17000000 mov esi,17
004AB2C6 F7F6 div esi
004AB2C8 8B85 74EBFFFF mov eax,dword ptr ss:[ebp-148C]
004AB2CE 8B0C81 mov ecx,dword ptr ds:[ecx+eax*4]
004AB2D1 338C95 70EEFFFF xor ecx,dword ptr ss:[ebp+edx*4-1190]
004AB2D8 8B95 34ECFFFF mov edx,dword ptr ss:[ebp-13CC]
004AB2DE 03D1 add edx,ecx
004AB2E0 8995 34ECFFFF mov dword ptr ss:[ebp-13CC],edx
//修改为ret ★
004AB33F 8B85 48EEFFFF mov eax,dword ptr ss:[ebp-11B8]
//④、004AB33F 第4个点 若不跳,则距离下个EIP的长度
004AB345 8B0C85 18444E00 mov ecx,dword ptr ds:[eax*4+4E4418]
004AB34C 8B95 74EBFFFF mov edx,dword ptr ss:[ebp-148C]
004AB352 33C0 xor eax,eax
004AB354 8A0411 mov al,byte ptr ds:[ecx+edx]
004AB357 8B8D 34ECFFFF mov ecx,dword ptr ss:[ebp-13CC]
004AB35D 03C8 add ecx,eax
004AB35F 898D 34ECFFFF mov dword ptr ss:[ebp-13CC],ecx
//修改为ret ★ Alt+M打开内存察看窗口,设置00401000、0044A000、0047D000段为完整权限。
用WinHex打开上面修复的dump_.exe,把代码段部分0X00001000-0X00049FFF数据复制写入到OllyDBG正在调试的Armadillo.exe代码段(401000-449FFF)处。
在0044A000处写入我们的修复代码,把Disasm.dll放入和Armadillo.exe同一目录下,以备调用。
下面是通过穷举标志位来修复CC。在044A000处新建EIP
0044A000 60 pushad
0044A001 E8 00000000 call 0044A006
0044A006 5B pop ebx
0044A007 83EB 06 sub ebx,6
0044A00A E8 0C000000 call 0044A01B
0044A00F 64:6973 61 736D2E6>imul esi,dword ptr fs:[ebx+61],642E6D73
0044A017 6C ins byte ptr es:[edi],dx
0044A018 6C ins byte ptr es:[edi],dx
0044A019 0000 add byte ptr ds:[eax],al
//上面是什么?数据窗口看一下就知道了
0044A01B E8 A48F437C call kernel32.LoadLibraryA
//LoadLibraryA Disasm.dll 对代码段反汇编
0044A020 05 00100000 add eax,1000
0044A025 8983 80020000 mov dword ptr ds:[ebx+280],eax
0044A02B BE 00104000 mov esi,401000
0044A030 6A 00 push 0
0044A032 8D83 00050000 lea eax,dword ptr ds:[ebx+500]
0044A038 50 push eax
0044A039 8D83 00060000 lea eax,dword ptr ds:[ebx+600]
0044A03F 50 push eax
0044A040 6A 00 push 0
0044A042 56 push esi
0044A043 FF93 80020000 call dword ptr ds:[ebx+280]
0044A049 803E CC cmp byte ptr ds:[esi],0CC
0044A04C 74 0F je short 0044A05D
0044A04E 03B3 58050000 add esi,dword ptr ds:[ebx+558]
0044A054 3BF3 cmp esi,ebx
0044A056 7C D8 jl short 0044A030
0044A058 E9 C6010000 jmp 0044A223
0044A05D 46 inc esi
0044A05E 66:813E CCCC cmp word ptr ds:[esi],0CCCC
0044A063 75 08 jnz short 0044A06D
0044A065 46 inc esi
0044A066 803E CC cmp byte ptr ds:[esi],0CC
0044A069 74 FA je short 0044A065
0044A06B EB C3 jmp short 0044A030
0044A06D 817E FF CC558BEC cmp dword ptr ds:[esi-1],EC8B55CC
0044A074 74 BA je short 0044A030
0044A076 817E FF CCCC558B cmp dword ptr ds:[esi-1],8B55CCCC
0044A07D 74 B1 je short 0044A030
0044A07F 8B46 FE mov eax,dword ptr ds:[esi-2]
0044A082 25 FFFFFF00 and eax,0FFFFFF
0044A087 3D C3CCCC00 cmp eax,0CCCCC3
0044A08C 74 A2 je short 0044A030
0044A08E 8B46 FC mov eax,dword ptr ds:[esi-4]
0044A091 25 FF00FFFF and eax,FFFF00FF
0044A096 3D C20000CC cmp eax,CC0000C2
0044A09B 75 08 jnz short 0044A0A5
0044A09D 803E CC cmp byte ptr ds:[esi],0CC
0044A0A0 75 8E jnz short 0044A030
0044A0A2 46 inc esi
0044A0A3 EB F8 jmp short 0044A09D
0044A0A5 66:813E FF25 cmp word ptr ds:[esi],25FF
0044A0AA 74 84 je short 0044A030
0044A0AC 90 nop
0044A0AD 89B5 34ECFFFF mov dword ptr ss:[ebp-13CC],esi
0044A0B3 60 pushad
0044A0B4 E8 87010000 call 0044A240
0044A0B9 61 popad
0044A0BA 75 FE jnz short 0044A0BA
0044A0BC 60 pushad
0044A0BD 8DB3 00030000 lea esi,dword ptr ds:[ebx+300]
0044A0C3 33C9 xor ecx,ecx
0044A0C5 8DBB 80040000 lea edi,dword ptr ds:[ebx+480]
0044A0CB 8B06 mov eax,dword ptr ds:[esi]
0044A0CD 8985 3CECFFFF mov dword ptr ss:[ebp-13C4],eax
0044A0D3 8B46 04 mov eax,dword ptr ds:[esi+4]
0044A0D6 8985 28ECFFFF mov dword ptr ss:[ebp-13D8],eax
0044A0DC 56 push esi
0044A0DD 57 push edi
0044A0DE 51 push ecx
0044A0DF 53 push ebx
0044A0E0 E8 63010000 call 0044A248
0044A0E5 5B pop ebx
0044A0E6 59 pop ecx
0044A0E7 5F pop edi
0044A0E8 5E pop esi
0044A0E9 83C6 08 add esi,8
0044A0EC 880439 mov byte ptr ds:[ecx+edi],al
0044A0EF 80F9 20 cmp cl,20
0044A0F2 7D 08 jge short 0044A0FC
0044A0F4 83E0 01 and eax,1
0044A0F7 D3E0 shl eax,cl
0044A0F9 0947 28 or dword ptr ds:[edi+28],eax
0044A0FC 41 inc ecx
0044A0FD 83F9 24 cmp ecx,24
0044A100 7C C9 jl short 0044A0CB
0044A102 61 popad
0044A103 56 push esi
0044A104 53 push ebx
0044A105 E8 46010000 call 0044A250
0044A10A 51 push ecx
0044A10B E8 48010000 call 0044A258
0044A110 59 pop ecx
0044A111 5B pop ebx
0044A112 5E pop esi
0044A113 8DBB 40040000 lea edi,dword ptr ds:[ebx+440]
0044A119 66:8B93 A8040000 mov dx,word ptr ds:[ebx+4A8]
0044A120 66:3B17 cmp dx,word ptr ds:[edi]
0044A123 74 60 je short 0044A185
0044A125 83C7 04 add edi,4
0044A128 833F 00 cmp dword ptr ds:[edi],0
0044A12B 75 F3 jnz short 0044A120
0044A12D 8DBB 40040000 lea edi,dword ptr ds:[ebx+440]
0044A133 66:8B93 A8040000 mov dx,word ptr ds:[ebx+4A8]
0044A13A 66:F7D2 not dx
0044A13D 66:3B17 cmp dx,word ptr ds:[edi]
0044A140 74 4E je short 0044A190
0044A142 83C7 04 add edi,4
0044A145 833F 00 cmp dword ptr ds:[edi],0
0044A148 75 F3 jnz short 0044A13D
0044A14A 66:83BB A8040000 0>cmp word ptr ds:[ebx+4A8],0
0044A152 75 13 jnz short 0044A167
0044A154 66:8B93 AA040000 mov dx,word ptr ds:[ebx+4AA]
0044A15B 66:83E2 01 and dx,1
0044A15F 74 59 je short 0044A1BA
0044A161 66:BA 7A00 mov dx,7A
0044A165 EB 31 jmp short 0044A198
0044A167 66:81BB A8040000 F>cmp word ptr ds:[ebx+4A8],0FFFF
0044A170 75 48 jnz short 0044A1BA
0044A172 66:8B93 AA040000 mov dx,word ptr ds:[ebx+4AA]
0044A179 66:83E2 01 and dx,1
0044A17D 75 3B jnz short 0044A1BA
0044A17F 66:BA 7B00 mov dx,7B
0044A183 EB 13 jmp short 0044A198
0044A185 66:8B57 02 mov dx,word ptr ds:[edi+2]
0044A189 66:81E2 FF00 and dx,0FF
0044A18E EB 08 jmp short 0044A198
0044A190 66:8B57 02 mov dx,word ptr ds:[edi+2]
0044A194 66:C1EA 08 shr dx,8
0044A198 3C 01 cmp al,1
0044A19A 75 08 jnz short 0044A1A4
0044A19C 8856 FF mov byte ptr ds:[esi-1],dl
0044A19F 49 dec ecx
0044A1A0 880E mov byte ptr ds:[esi],cl
0044A1A2 EB 65 jmp short 0044A209
0044A1A4 3C 05 cmp al,5
0044A1A6 75 FE jnz short 0044A1A6
0044A1A8 C646 FF 0F mov byte ptr ds:[esi-1],0F
0044A1AC 66:83C2 10 add dx,10
0044A1B0 8816 mov byte ptr ds:[esi],dl
0044A1B2 83E9 05 sub ecx,5
0044A1B5 894E 01 mov dword ptr ds:[esi+1],ecx
0044A1B8 EB 4F jmp short 0044A209
0044A1BA 83BB A8040000 FF cmp dword ptr ds:[ebx+4A8],-1
0044A1C1 75 1C jnz short 0044A1DF
0044A1C3 3C 01 cmp al,1
0044A1C5 75 09 jnz short 0044A1D0
0044A1C7 C646 FF EB mov byte ptr ds:[esi-1],0EB
0044A1CB 49 dec ecx
0044A1CC 880E mov byte ptr ds:[esi],cl
0044A1CE EB 39 jmp short 0044A209
0044A1D0 3C 04 cmp al,4
0044A1D2 75 FE jnz short 0044A1D2
0044A1D4 C646 FF E9 mov byte ptr ds:[esi-1],0E9
0044A1D8 83E9 04 sub ecx,4
0044A1DB 890E mov dword ptr ds:[esi],ecx
0044A1DD EB 2A jmp short 0044A209
0044A1DF 8B93 A0040000 mov edx,dword ptr ds:[ebx+4A0]
0044A1E5 83FA 01 cmp edx,1
0044A1E8 75 09 jnz short 0044A1F3
0044A1EA C646 FF E3 mov byte ptr ds:[esi-1],0E3
0044A1EE 49 dec ecx
0044A1EF 880E mov byte ptr ds:[esi],cl
0044A1F1 EB 16 jmp short 0044A209
0044A1F3 81FA 01010000 cmp edx,101
0044A1F9 75 09 jnz short 0044A204
0044A1FB C646 FF E3 mov byte ptr ds:[esi-1],0E3
0044A1FF 49 dec ecx
0044A200 880E mov byte ptr ds:[esi],cl
0044A202 EB 05 jmp short 0044A209
0044A204 61 popad
0044A205 EB FE jmp short 0044A205
0044A207 90 nop
0044A208 90 nop
0044A209 0FB6C0 movzx eax,al
0044A20C 03F0 add esi,eax
0044A20E 33C0 xor eax,eax
0044A210 8DBB 80040000 lea edi,dword ptr ds:[ebx+480]
0044A216 B9 0C000000 mov ecx,0C
0044A21B F3:AB rep stos dword ptr es:[edi]
0044A21D E9 0EFEFFFF jmp 0044A030
0044A222 90 nop
0044A223 61 popad
0044A224 C3 retn
//这里下断,Shit+F9,中断后CC修复完毕 ★
0044A225 90 nop
0044A226 90 nop
0044A227 90 nop
0044A228 90 nop
0044A229 90 nop
0044A22A 90 nop
0044A22B 90 nop
0044A22C 90 nop
0044A22D 90 nop
0044A22E 90 nop
0044A22F 90 nop
0044A230 90 nop
0044A231 90 nop
0044A232 90 nop
0044A233 90 nop
0044A234 90 nop
0044A235 90 nop
0044A236 90 nop
0044A237 90 nop
0044A238 90 nop
0044A239 90 nop
0044A23A 90 nop
0044A23B 90 nop
0044A23C 90 nop
0044A23D 90 nop
0044A23E 90 nop
0044A23F 90 nop
0044A240 68 7BB04A00 push 4AB07B
//第1个点地址
0044A245 C3 retn
0044A246 90 nop
0044A247 90 nop
0044A248 68 F6B14A00 push 4AB1F6
//第2个点地址
0044A24D C3 retn
0044A24E 90 nop
0044A24F 90 nop
0044A250 68 ACB24A00 push 4AB2AC
//第3个点地址
0044A255 C3 retn
0044A256 90 nop
0044A257 90 nop
0044A258 68 3FB34A00 push 4AB33F
//第4个点地址
0044A25D C3 retn OllyDBG二进制代码复制:
60 E8 00 00 00 00 5B 83 EB 06 E8 0C 00 00 00 64 69 73 61 73 6D 2E 64 6C 6C 00 00 E8 A4 8F 43 7C
05 00 10 00 00 89 83 80 02 00 00 BE 00 10 40 00 6A 00 8D 83 00 05 00 00 50 8D 83 00 06 00 00 50
6A 00 56 FF 93 80 02 00 00 80 3E CC 74 0F 03 B3 58 05 00 00 3B F3 7C D8 E9 C6 01 00 00 46 66 81
3E CC CC 75 08 46 80 3E CC 74 FA EB C3 81 7E FF CC 55 8B EC 74 BA 81 7E FF CC CC 55 8B 74 B1 8B
46 FE 25 FF FF FF 00 3D C3 CC CC 00 74 A2 8B 46 FC 25 FF 00 FF FF 3D C2 00 00 CC 75 08 80 3E CC
75 8E 46 EB F8 66 81 3E FF 25 74 84 90 89 B5 34 EC FF FF 60 E8 87 01 00 00 61 75 FE 60 8D B3 00
03 00 00 33 C9 8D BB 80 04 00 00 8B 06 89 85 3C EC FF FF 8B 46 04 89 85 28 EC FF FF 56 57 51 53
E8 63 01 00 00 5B 59 5F 5E 83 C6 08 88 04 39 80 F9 20 7D 08 83 E0 01 D3 E0 09 47 28 41 83 F9 24
7C C9 61 56 53 E8 46 01 00 00 51 E8 48 01 00 00 59 5B 5E 8D BB 40 04 00 00 66 8B 93 A8 04 00 00
66 3B 17 74 60 83 C7 04 83 3F 00 75 F3 8D BB 40 04 00 00 66 8B 93 A8 04 00 00 66 F7 D2 66 3B 17
74 4E 83 C7 04 83 3F 00 75 F3 66 83 BB A8 04 00 00 00 75 13 66 8B 93 AA 04 00 00 66 83 E2 01 74
59 66 BA 7A 00 EB 31 66 81 BB A8 04 00 00 FF FF 75 48 66 8B 93 AA 04 00 00 66 83 E2 01 75 3B 66
BA 7B 00 EB 13 66 8B 57 02 66 81 E2 FF 00 EB 08 66 8B 57 02 66 C1 EA 08 3C 01 75 08 88 56 FF 49
88 0E EB 65 3C 05 75 FE C6 46 FF 0F 66 83 C2 10 88 16 83 E9 05 89 4E 01 EB 4F 83 BB A8 04 00 00
FF 75 1C 3C 01 75 09 C6 46 FF EB 49 88 0E EB 39 3C 04 75 FE C6 46 FF E9 83 E9 04 89 0E EB 2A 8B
93 A0 04 00 00 83 FA 01 75 09 C6 46 FF E3 49 88 0E EB 16 81 FA 01 01 00 00 75 09 C6 46 FF E3 49
88 0E EB 05 61 EB FE 90 90 0F B6 C0 03 F0 33 C0 8D BB 80 04 00 00 B9 0C 00 00 00 F3 AB E9 0E FE
FF FF 90 61 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
68 7B B0 4A 00 C3 90 90 68 F6 B1 4A 00 C3 90 90 68 AC B2 4A 00 C3 90 90 68 3F B3 4A 00 C3 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 81 00 00 00 00 00 00 00
00 08 00 00 00 00 00 00 01 08 00 00 00 00 00 00 80 08 00 00 00 00 00 00 81 08 00 00 00 00 00 00
40 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00 C0 00 00 00 00 00 00 00 C1 00 00 00 00 00 00 00
40 08 00 00 00 00 00 00 41 08 00 00 00 00 00 00 C0 08 00 00 00 00 00 00 C1 08 00 00 00 00 00 00
04 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 84 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00
04 08 00 00 00 00 00 00 05 08 00 00 00 00 00 00 84 08 00 00 00 00 00 00 85 08 00 00 00 00 00 00
44 00 00 00 00 00 00 00 45 00 00 00 00 00 00 00 C4 00 00 00 00 00 00 00 C5 00 00 00 00 00 00 00
44 08 00 00 00 00 00 00 45 08 00 00 00 00 00 00 C4 08 00 00 00 00 00 00 C5 08 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 01 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3C FF 7E 7F 3C 3C 7C 7D AA FF 76 77 00 FF 74 75 CC CC 78 79 AA AA 72 73 F0 F0 70 71 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
注意:粘贴代码后你需要修正0044A01B处LoadLibraryA以及4个点的地址
Shit+F9后需要修复一段时间
修复完毕后把刚才区段的数据再复制写入回dump_.exe,有个CC误修复了,参考原版改回:
004427CF EB B9 jmp short 0044278A
004427D1 4C dec esp
004427D2 24 0C and al,0C
//修改为:
004427CF CC int3
004427D0 8B4C24 0C mov ecx,dword ptr ss:[esp+C]
004427D4 57 push edi
004427D5 85C9 test ecx,ecx
004427D7 74 7A je short 00442853 OK,脱壳完毕。
至于脱壳后的其他暗桩有时间就慢慢分析吧
困了,会周公去也
Game Over
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ \_ , 青春都一晌
( /~ / \~-._ |\
`\\ _/ \ ~\ ) 忍把浮名
_-~~~-.) )__/;;,. \_ //'
/'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了脱壳轻狂
`~ _( ,_..--\ ( ,;'' / ~-- /._`\
/~~//' /' `~\ ) /--.._, )_ `~
" `~" " `" /~'`\ `\\~~\
" " "~' ""
UnPacKed By : heXer
2005-11-05 01:00
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课