码迷,mamicode.com
首页 > 其他好文 > 详细

OD调试篇13

时间:2015-11-05 20:21:16      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:

今天的程序比较大,听说还是比较牛的程序,不过破解它的一个比较老的版本的。打开程序看看。
点击about   然后点enter registration code    输入name  以及密钥之后,会出现以下情况。
技术分享
那我们先查看一下有没有加壳,发现是用vc6编写的,对我们来说比较熟悉~
技术分享
那就先用OD加载进来
技术分享
在编辑框里获取字符串,一般使用getwindowtext这个API函数进行获取,我们有两种方法,
技术分享
技术分享
技术分享
3个断点
getwindowtextA就是以ascii码的形式获取,我们可以在每个命令上设置断点
还有一种方法     ctrl+n   技术分享
还是一样三个断点,那我们可以运行起来,看看正在哪里断下,断下又有没有用
技术分享
发现断下了,但并没有让我们输入什么,所以不要这个断点,去掉
一个一个试过去,终于能输入了
技术分享
然后我们一直F8,看看有没有什么跳转的地方发现两个跳转
技术分享
技术分享
这两个跳转是检测是否有 没有填的框的  并没有什么卵用,我们放过它们。继续找,发现一个通向成功的跳转!
技术分享
技术分享
那我们会发现一个有趣的现象
技术分享
两段代码竟然完全一样,我们重新载入程序,跟进去都看看
技术分享
发现它把1mov给了al  可能就是成功的标志
技术分享
那然后就可以继续F8了,既然找到了标志。
技术分享
发现一个跳转直接跳出了成功的标志,我们当然不要它跳,改标志位看看先
技术分享
修改了之后,成功了。。。。虽然成功了,但是发现了问题
技术分享
竟然还是not been registered!!!看来还是不行啊
好了,我又来了。我们可以右键查找字符串,找到这个“this xoftspy license has not been registered”,双击进入
技术分享
是上面 je  跳转  跳过来的
技术分享
在验证的call前面加个断点,以防万一,在这段代码的开头也加个断点,然后重新载入
发现程序点一下about就触发了这个断点,我们可以F8单步走走看看。之前有加断点的call肯定有问题,我们可以F7进去看看
技术分享
技术分享
来到一个关键点,test al,al 下面有一个跳转,
技术分享
跳转如果实现的话,bl的值就会变成1,那下面的al也会变成1,那么当程序返回的时候应该就是成功了;但是如果跳转未实现的话,就会经过jmp直接绕过了bl为1,把bl清零了。
技术分享
意思就是al为1就可以     我们可以把这个代码  直接改为  mov al,1就OK了
技术分享
改过之后就成功了,has been registered !












OD调试篇13

标签:

原文地址:http://www.cnblogs.com/terryue/p/4940453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!