《第3期-08 职称直考通》学习笔记

2018-11-13  本文已影响0人  听说我在混吃等死

一、破解过程


查找字符串”很抱歉,注册失败“,会出来很多结果。找到和出错提示相符的,分析汇编代码,会找到关键跳;

00453310  |.  E8 4B20FBFF   call    00405360
00453315  |.  833D 0CDB5D00>cmp     dword ptr ds:[0x5DDB0C],0x1
0045331C  |.  0F84 23090000 je      00453C45
00453322  |.  E8 399BFBFF   call    0040CE60

只是更改关键跳是不够的,但是找到了常量0x5DDB0C,可以使用“查找所有常量”法了。在找到的所有的结果上设置断点。
2、再次点击注册,会断下来,

004532C0      E8 DB3F0000   call    004572A0                         
004532C5      A3 0CDB5D00   mov     dword ptr ds:[0x5DDB0C],eax      

分析一下代码: 004572A0这个call的返回值放到eax中,然后eax的值给了[0x5DDB0C]。这就说明004572A0的返回值给了[0x5DDB0C]。那么004572A0这个call就是关键call了。
3、进入04572A0这个关键call。
在断首下断点后,单步执行,发现最后eax的值为1。但是在单步过程中是有不少跳转,跳过了eax赋值为其他值的:2、3、4、5。于是猜测,是不是eax改为这些值就是注册版了呢?试验着将断首改为


修改为5,得到的是:


修改为4,得到的是:


修改为3,得到的是:


修改为2,得到的是:


不同的值对应于不同的版本。
二、视频总结
视频中,作者也是通过查找字符串找到了常量0x5DDB0C;接下来对0x5DDB0C地址处的内存下硬件写入断点,从而找到了关键call——04572A0;然后进入04572A0这个call内部,单步运行,注意堆栈窗口中出现假码和可疑字符串在一起,就复制下来。
最后把复制处的可疑字符串试一试。

上一篇下一篇

猜你喜欢

热点阅读