OD调试篇13

今天的程序比较大,听说还是比较牛的程序,不过破解它的一个比较老的版本的。打开程序看看。

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








上一篇:TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类—Jason niu


下一篇:Java基础--finalize()方法