本帖最后由 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架构的文章”。本论坛没有哦,呵呵。 |