saning 发表于 2010-10-18 09:02

ximo在庆祝A-new苏醒系列之二中的一个小错误

本帖最后由 saning 于 2010-10-18 09:07 编辑

代码很清晰,爆破很容易。
004014FB 75 15 jnz short crackme2.00401512
把这句代码的jnz改成jz,也就是75改74,或者直接nop掉,即可完成爆破。
但是,由于加了外壳,不能直接修改后进行保存。不过我们找到了关键位置4014FB。

二.寻找解密过程,进行patch,实现爆破
重新加载程序,然后直接在4014FB下硬件写入断点,选择byte。F9运行,程序中断下来。
断下后看寄存器,注意EDI跟ESI的值:

ESI 0040E456 crackme2.0040E456 //待解密的数据
EDI 004014FC crackme2.004014FC //解密后存放的位置
对4014FB下硬件写入断点,选择byte。F9运行,程序中断下来。
这里断下来以后,其实“关键位置4014FB”这个代码已经要写入了75这个值,单步走一下就写入了。
算法是对的,错误是在这里。
解密后可得,74加密后的数据为90.
于是,我们把4014fb这个地址的数据修改成90,保存一下,即可完成破解。

4014fb这个地址的数据修改成90,
这里应该是crackme2.0040E455 这个地址数据改成90 也就是esi-1的这个值。
-----------------------------------------------------------------------------------------
我还有个疑问:2个0D分别bp MapViewOfFile,然后运行。
我下这个断点之后的值为什么是不一样的呢?ximo大牛的两个程序下断点就是一样的值。
我的程序是vmp1.704的。为什么先跑到断点的地方,然后才跑bp MapViewOfFile。
而他的程序是先跑bp MapViewOfFile,再跑4014FB这个断点呢?
如何找ximo口中所说的“分析VM架构的文章”。本论坛没有哦,呵呵。

meigaolei 发表于 2010-10-18 09:19

高手做的 小菜我看不明白 要多学学

a82427531 发表于 2010-10-18 10:17

正在看懂的路上。--

heqiankun 发表于 2010-10-18 12:03

一头雾水啊

ximo 发表于 2010-10-19 13:11

这个得确是错误,是笔误而已。知道原理就OK了。VM的架构,百度一下还是很多的,不仅仅搜当前版本的,以前版本的也是可以参考的,因为一直没什么大变化。
还有,先取消断点,再下bp MapViewOfFile运行呢?

2666fff 发表于 2010-10-19 13:36

aa1ss2的名作 VMProtect逆向分析
页: [1]
查看完整版本: ximo在庆祝A-new苏醒系列之二中的一个小错误