|
欢迎您注册加入!这里有您将更精采!
您需要 登录 才可以下载或查看,没有账号?注册
x
貌似过ZProtect的文件校验比较简单,下面以1.4.4.0 Pro为例(1.4.9.0 Preview2也可以)。
加了ZProtect壳的程序如果被修改,运行将提示“当前程序文件已经被破坏,请重新安装软件!”,然后退出程序,这个就是ZProtect的文件校验。
1、目标文件名为Notepad.zp.exe,OD打开之,bp MapViewOfFile在MapViewOfFile下个断点,F9运行,中断后F2取消断点,然后Atl + F9返回。
2、现在eax指向的内存里就是Notepad.zp.exe文件自身的内容,hr eax在eax指向的内存下硬件访问断点,F9运行,中断在下面:- 00953C37 56 push esi
- 00953C38 57 push edi
- 00953C39 8DA424 00000000 lea esp, dword ptr [esp]
- 00953C40 0FB63A movzx edi, byte ptr [edx]
- 00953C43 8BF0 mov esi, eax ; ★ 中断在这里
- 00953C45 81E6 FF000000 and esi, 0FF
- 00953C4B 33F7 xor esi, edi
- 00953C4D C1E8 08 shr eax, 8
- 00953C50 3304B5 AC989600 xor eax, dword ptr [esi*4+9698AC]
- 00953C57 83E9 01 sub ecx, 1
- 00953C5A 83C2 01 add edx, 1
- 00953C5D 85C9 test ecx, ecx
- 00953C5F ^ 75 DF jnz short 00953C40
- 00953C61 5F pop edi
- 00953C62 5E pop esi
- 00953C63 F7D0 not eax
- 00953C65 C3 ret
复制代码 这里就是计算校验码的地方,这里会被调用两次,得到两个值,最后xor两个值得到最终的文件校验码。
删除硬件断点,然后在00953C65处按F4,然后F8。
3、反复按F7,直到出现cmp指令,大致过程如下(已去除花指令):- 0096F592 8B4C24 24 mov ecx, dword ptr [esp+24]
- 00970BF1 8B5424 10 mov edx, dword ptr [esp+10]
- 0097294B 33C8 xor ecx, eax ; ★ 前面计算得的两个值xor得到最终的校验码
- 0096C9A9 3B4A 40 cmp ecx, dword ptr [edx+40]
- ; ★ ecx=文件现在的校验码,dword ptr [edx+40]=文件原始的校验码
复制代码 dword ptr [edx+40]指向的内存是文件里的固定地址,可以直接修改的,将dword ptr [edx+40]内存里的值改为ecx的值,然后复制到可执行文件就可以了。 |
|