-
-
[旧帖] [原创]脱ZProtect1.41 0.00雪花
-
发表于: 2011-10-29 13:19 2368
-
脱ZProtect1.41
先用PEID查下,ZP1.4X的,载入OD。
0049F957 > 8D84C0 00010401 lea eax, dword ptr [eax+eax*8+104010>
0049F95E ^ E9 45FCFFFF jmp 0049F5A8
先单步跟踪,来到这里。
0049F8E1 E8 02000000 call 0049F8E8
0049F8E6 F7 ??? ; 未知命令
0049F8E7 0D 8704248D or eax, 8D240487
0049F8EC 8055 02 00 adc byte ptr [ebp+2], 0
0049F8F0 0087 0424E942 add byte ptr [edi+42E92404], al
0049F8F6 0200 add al, byte ptr [eax]
CALL下面就是个???当然应当F7步入。在经过JMP来到了
0049FB3B 60 pushad //可以用ESP了
0049FB3C E9 7D000000 jmp 0049FBBE
0049FB41 DF97 89442410 fist word ptr [edi+10244489]
0049FB47 E9 4B010000 jmp 0049FC97
0049FB4C EE out dx, al
0049FB4D 0F85 BA000000 jnz 0049FC0D
0049FB53 ^ E9 CEFBFFFF jmp 0049F726
0049FB58 897C24 1C mov dword ptr [esp+1C], edi
0049FB5C ^ E9 88FBFFFF jmp 0049F6E9
步过0049FB3B,命令栏 HR ESP
然后F9运行。
00B123F9 ^\E9 CEFCFFFF jmp 00B120CC
00B120CC C3 retn
到达OEP了~~
0047C6BC 55 push ebp
0047C6BD 8BEC mov ebp, esp
0047C6BF 83C4 F0 add esp, -10
0047C6C2 B8 E4C44700 mov eax, 0047C4E4
0047C6C7 E8 68A1F8FF call 00406834
0047C6CC A1 F0E24700 mov eax, dword ptr [47E2F0]
0047C6D1 8B00 mov eax, dword ptr [eax]
0047C6D3 E8 3043FEFF call 00460A08
0047C6D8 A1 F0E24700 mov eax, dword ptr [47E2F0]
0047C6DD 8B00 mov eax, dword ptr [eax]
0047C6DF BA 1CC74700 mov edx, 0047C71C
0047C6E4 E8 433FFEFF call 0046062C
0047C6E9 8B0D ECE34700 mov ecx, dword ptr [47E3EC] ; unpack_z.0047FD0C
Delphi的头。。然后就是脱壳修复了。
现在普遍有两种方法进行脱壳修复,一种是用修复代码,IAT修复完毕再脱壳。
另一种是直接脱壳,对付常规壳一样再慢慢修复。这次用的是后者。
直接用LORDPE 脱壳,然后打开 IMPORT REC载入
所有IAT基本都无效,用1级跟踪没用,2级跟踪也没什么用,半路动不鸟了~~~
只好先关了,重新打开IMPORT REC,再打开原加壳程序,进程选取原加壳程序。
然后输入OEP查找IAT,接着用等级3一段一段修复
不过这个程序IAT还不少,花了五六分钟才修复完,最好中间保存一下树文件,万一
快完工的时候,机子不给力那可就惨了~!
当全部修复完成时,转出修复就OK了~~
测试运行。。。有错误~~~
ZP对软件资源另有保护,用LORDPE加载脱壳后程序,点击目录-资源,LORDPE直接跳掉了,
说明问题就出在这。LORDPE里资源地址是:001CC000
打开C32ASM,载入程序,转到上述位置,前面几位都00,不鸟他,
从有内容的开始, AD 7C 86 30
然后把光标拖回最上面,搜索十六进制 AD 7C 86 30
然后到达了 0009A000 将这个地址替换LORDPE里的原地址,然后再测试下
成功打开了。。。
----------------------------------------------------------------------------------
还有一种是代码修复IAT了,这里就不详细讲了,我把从网上找来的代码发下
时间过去N久了,作者是谁忘了,望作者勿怪~~
修复代码信息:
B8 00 40 42 00 8B 18 83 FB 00 74 36 80 3B 68 75 40 8B 4B 01 50 51 FF 15 2C 65 A8 00 8B F0 A1 64
6C A8 00 2B 05 60 6C A8 00 C1 F8 02 3B F0 72 05 E8 76 49 FF FF A1 60 6C A8 00 8B 04 B0 5F 57 89
07 58 83 C0 04 3D 90 47 42 00 72 B9 E9 81 01 82 FF 66 81 3B 50 60 75 EA 80 7B 02 68 75 E4 8B 4B
03 EB B1
mov eax, XXXXXXXX //IAT起始位置
CMP EAX,XXXXXX //IAT终止位置
中括号里得一些相同的常量的地址改成解码CALL地址就OK了
不过有部分IAT要自己手动修复。大家自己弄吧。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!