通过上一篇图文,我们已经掌握了简单的爆破技巧,那么 今天我们来了解一下 从内存中获取注册码,很多软件由于是本地验证,那么就要拿你的用户名来计算出一个验证码,然后跟加码比较,只要我们在他拿真的出来比较的时候,复制出来 即可得到真正的注册码

这个教程的软件,我打算用上个教程留的练习里面的crackme,也就是160个cm里面的第8个,上次的练习是让你们尝试爆破 应该还有印象吧!

废话不多说,上次我们还记得,我们随便输入一个错误的注册码 他会弹出一个提示,然后我们通过提示的字符串,找到是那里提示的,现在我们照样找到这个地方,如果不记得怎么找了 去看看上次的教程

我们用OD加载这个软件,搜索字符串,

找到这个字符串对你们来讲应该已经非常容易了,我们双击这个字符串,看看是哪里调用的

只要你做了上次的练习 应该能记得这里,他上面有个jmp jmp上面还有个跳转,跳过了jmp,如果是爆破把jmp上面的跳转干掉就OK了, 但是 我们这里不是爆破

我们看看上面的图,如果是爆破的话 干掉绿色框框的地方就OK了,但是,这次是找注册码,我们看看je上面有没有关键跳。一般来讲 跳转语句的上面的一个call就是关键call,但是 这次情况例外,为什么呢,我们看看OD的注释,也就是我红色箭头处,strcmp 有编程经验的朋友应该知道 这个是字符串比较的函数,既然要比较两个字符串,我们把断点打这里,断点是什么呢,我们可以这么理解,就是程序执行到一个有断点的地方 他就会暂停下来,你让他继续走 他才敢继续往下面执行代码,OD中我们选中一行 按F2可以设置断点 设置好断点以后,那一行的地址 是红色的,好了,设置好断了断点以后,我们输入dbgpro.com按OK 继续执行。要取消一个断点,只要在那一行再按一次F2即可

可以看到 一按OK OD立马就显示了暂停(左上角,红色箭头) 既然在call处暂停了,我们看看 堆栈窗口,就是右下角那个小窗口,为什么看堆栈窗口呢,因为函数调用的时候参数是通过堆栈来传递的,我们看到堆栈有两个字符串,一个是我们输入的 假的注册码,一个可能是真正的注册码。我们把它复制下来

选中这一行 右键 复制 或者直接Ctrl+c

注意 复制出来的时候地址都会复制出来,我们复制到记事本看看

我们只要红色框框的位置 把上图红色框框的复制下来

刚才我们打了断点,还记得吗?现在我们让他运行起来,在软件上面有个小三角,点一下,或者按F9 

软件运行起来后,我们输入刚才复制出来的注册码试试

是不是也觉得很简单!!!

好了 记得把今天这个在自己的电脑上试试,只看教程,不练习 是学不会破解的。

今天练习的下载地址是:链接: http://pan.baidu.com/s/1nvM2Ezn 密码: 8f8f

练习的解答明天放出来:http://www.dbgpro.com/archives/1146.html

打赏