a13686593572 发表于 2013-2-13 13:09

解决ZP壳在WIN7下解码出错。大牛飘过。

本帖最后由 a13686593572 于 2013-2-13 14:14 编辑

首先多谢大牛Kido、RedAngel丶、Hmily(时间顺序...)大牛的热心回复,问题已经解决了。
【吾爱第三届动画大赛参赛作品】- ZP1.4.9全保护脱壳
这个教程里面,在解码那里断在 xor eax,eax(第一次),在ESP指针指向的地址填KEY后运行后又断在xor eax,eax(第二次) 这里但是 RedAngel丶这次不填了,而是再次运行,断在xor eax,eax (第三次),又填了。这样反复填一次隔一次再填。然后小菜就开始在WIN7上面一步一步照着做。程序果断崩溃了。然后再看了反复看了几遍解码的那部分,发现隔开的那一次填KEY的地方的值为16字节个 00 :

而我的不是:

填完KEY运行后继续断下来,我就CTRL+G 到00401000 去看,是解码成功的。然后再次运行,断下后又跑到00401000去看,果断的变为乱码了。
后面我就想应该是这个问题了,既然这个地方是放KEY的,现在这个地方有了值但不是正确的KEY,那肯定要进行错误的解码了,然后每填一次KEY运行断下后就把这16字节给00填充掉,这一填充完运行,程序立马就崩溃了,这样不对。
重新想,反正这填完KEY后断下的是一次错误解码,那我不让你解码不就行了
重来...
填完KEY运行断下,因为下面的代码就是区段进行异或的代码了,然后看 xor eax,eax 下面有个 cmp dword ptr ss:,ecx 比较和一个 jle (小于或等于时跳转)的跳转,单步跟下去,发现 jle 跳转没实现,那不跳的话势必要对区段进行异或,这第二次异或解码,区段就变成乱码。

Jle 可以跳过循环异或,这时修Z改标志位改为1。让跳转实现,继续运行断在xor eax,eax 后到 00401000 看看,代码正常。
然后,对其他区段解码时依旧如此,填KEY运行断在 xor eax,eax,单步到 jle 修改标志让跳转实现。
最后,程序运行起来了。
----------------------------------------------------------
刚刚又拿【吾爱第三届动画大赛参赛作品】- ZP1.4.9全保护脱壳 里面的例子拿出来弄,发现原来的KEY也是教程里面找到的KEY:E6 D9 06 44 40 49 B1 CA 7F B4 26 39 ED 46 5A D2
不能用了,所以自己重新来找。KEY变成了:9E 6A 2E E3 FE 7F D8 DC 29 4B 54 7A 36 59 53 ED依旧是在WIN7上。
-----------------------------------------------------------------------

ByPassZP1.4.9带源码      
http://www.52pojie.cn/thread-184128-1-1.html

1354669803 发表于 2013-2-13 13:57

仰望大牛也收脱ZP么

a13686593572 发表于 2013-2-13 14:13

1354669803 发表于 2013-2-13 13:57 static/image/common/back.gif
仰望大牛也收脱ZP么

手脱滴不会..

yutao531315 发表于 2013-2-13 15:01

学习中 ,不断进步 没事了 总会来玩玩

as420775799 发表于 2013-2-13 17:15

路过哈哈。来看看

Victory.ms 发表于 2013-2-14 14:07

膜拜大大手脱ZP

Kido 发表于 2013-2-16 06:37

你强制修改后,代码只解码一次
填充的key是让代码一次性解码成功的
RA的是按照原来流程,多次解码,填充进去是最后一次解码正确的key
你们两个的key异或一下就可以得到你没执行而RA执行了的那次解码的key= =
我猜的
你可以试试
页: [1]
查看完整版本: 解决ZP壳在WIN7下解码出错。大牛飘过。