基础破解高手略过新手练手
源文件链接http://www.52pojie.cn/thread-595258-1-1.html,挺适合新手学习的。1、打开软件提示:未注册,你还可以使用x次。
2、放入od,搜索字符串。发现以下地址:
其实在这里可以发现,他是根据写入并读取c盘下的txt文件来进行限制使用的,我们先看看这里,双击进入
根据creatfileA函数可以看出,文件属性是隐藏+系统,所以如果需要查看的话,需要显示隐藏文件和系统文件。
也可以通过修改该文件来达到注册的目的,下面会讲到。
3、继续分析,主要看这段子程序,我们发现,有两处:未注册,你还可以使用x次,一个是固定的是10次,一个是%变量。
猜测应该是这样:初始为10次,然后通过读取txt,来改变变量为剩余次数。
4、开始调试,先把c盘哪个txt删掉。断点到跳转前的某个地址。下面的这个jnz可以跳过10次,但这里我们先不改这个,我们着重看如果已经注册。
5、走到这里,我们看到会跳过已经注册,所以分析这里。
cmp比较指令相当于减法,al是eax的低8位,即eax的后2位,为18,与3比较。al>3。
如果CF=0并ZF=0则参数一>参数二。对于JA,当CF和ZF为0时,跳转成立。或者可以这样想:ja用于无符号数比较,即jump if above,即前者大于后者则转移。18>3,所以跳转成立。
知道了原理,我们就可以修改,al的值或修改3为20或其他,或者修改跳转为jb,或者直接nop,总之使其跳转失效。
6、然后我们看看如何通过注册。重新运行程序,随便输入注册码,进行注册,提示“注册码错误”,找到关键字符串。
我们看到这个信息框函数来自以下4个跳转,
在前面设置一个断点,然后我们进行注册,断住,我们看到这里是比较 cmp byte ptr ss:,0x41,前面的内容可以再信息框看到为33,33与41不相等,则jnz跳转实现。
所以这里可以修改41为33,或者修改跳转为je,或者nop。
第2个跳转并未实现,不用理会。
第3个,jge为大于或等于则转移指令,这里是比较的cmp al,cl,al0大于cl是个负数(注意上面cl的赋值),所以跳转实现。所以cmp的参数,或者修改jge跳转或者nop填充。
第4个,jle为小于或等于则跳转。注意jge和jle都是带符号的。cl依然是负值,所以跳转再次实现,所以修改参数或跳转或nop填充。
最后就会注册成功。
再说说那个文件,注册成功,文件内容为D,10次为Z,9次为Y,,,所以,直接修改该文件内容也可达到目的。
好了就到这里,希望能帮助初学者。
mfvpnhaha 发表于 2017-4-28 00:45
那么问题来了这个也明文你说的啊表示很晕
什么意思呢,没理解。 适合我们新手学习 感谢分享。 点个赞 感谢分享 适合新手学习 {:1_927:}厉害。可以好好练练手 好厉害,学习了 一直觉得从基础到高级 中间有断层 厉害,谢谢分享 认真学习,摸索入门 阿马阿克,一个大mark.