CM破解教程详解-让小白破解思维极速提升!
本帖最后由 ajun2019 于 2022-5-30 21:58 编辑今天同样是小白破解cm的文章。但是同时还想分享一些关于OD的知识。
关于破解的教程,其实论坛里面有很多的了,我们在破解软件时候其实都离不开一个工具 就是OD,相信大家都很熟悉吧?
可以对比看下 自己电脑里面的OD 是不是这四个?那么它们分别有什么关系和作用呢?
先来看cpu当大家载入软件时候,你会发现很多代码反汇编还有机器码在里面疯狂展现,光标从上到下跑,没错,CPU在运算执行命令。
比如在对比真假注册码时候,CPU能计算出来真码是多少,但是想要跟你输入的注册码对比真假,还需要寄存器FPU的帮助,比如先把假码放入寄存器EAX,然后CPU自己去计算出来真码,最后再到FPU里面拿出假码来一比较,欧耶!
总结,CPU就是大脑运算,FPU就是寄存器。
最有意思的就是堆栈,我觉得它也是寄存的功能,它具体功能我还没搞懂,请大牛指教!
-----------------------------------------
上面我讲了一堆,到底是为什么呢?
因为今天分享的这个cm的破解,跟普通的不太一样,我们来看下。OD载入。运行起来。
随意输入注册码,然后搜索二进制码FF55FC5F5E然后F2下断点(之前我的文章有讲过为什么搜索这个,感兴趣的可以去看。)
然后点击“注册”按钮,成功断下来了,我们F7跟进去,你会发现很有意思的现象。在里面你根本找不到关键跳!而且不管怎么改,就是错误的提示!
这个作者就很有意思了。因为他利用了大家破解的思维惯性! 什么意思呢?大家想一下,咱们小白在破解的时候,会搜索字符串,还会下F12断点,就是为了能在错误提示的地方停留下来,然后在它的上面找关键跳,绕开错误,跳向正确。对不对??但是你来看看,这个代码,正确和错误都在一起,而且根本没有关键跳能跳开,即使你修改了错误提示的窗体也一样错误。说明其实这里根本就是一个迷魂阵!真正算注册码的地方根本不在这里!
上面我讲的那个例子,大多数软件计算和对比真假码时候,流程就是CPU先把你输入的假码寄放在FPU,然后CPU腾出手来算出来真码,最后再从FPU取出假码,整个过程都是在CPU的线程里面对比完成的。如下图所示:
但这个软件注册码验证的流程是这样的
看懂上面的以后,再来分析这个软件的破解方法。
注意到上图中那个push的了吗?它push 压栈了一个地址00401495,Ctrl+G来到这个地址看下。
注意这个call,跟随进去看下,你会看到 注册码的算法。
如果你此时想跟我一样下F2断点,那么就会这样!
根本无法断点,是不是跟我上面那个流程图一个意思?那怎么办? 很简单,我们下内存断点就可以了。因为它是在内存里面的。还记得那个push压栈了一个地址00401495么?等它把地址压进了堆栈,我们在堆栈右键跟随。
这样找到那个call 00401258 以后 跟随进去,下内存访问断点就可以了。运行一下。
破解用到的cm,我放在下面啦。大家可以试试,练练手!相信对大家破解思维的提升会非常有帮助的!
看到有人说怎么找push,还有人说这是海底捞针。我觉得,这只能说明一个问题,就是他们根本没有去跑过这个程序,只有跑过这个程序,这段代码的人,他们才知道为什么会是这个push,这个call。
当然,我也可以给个答案!那就是push根本不是最重要的,算法call的位置才是! 太棒了,谢谢分享 多谢分享 看看 大师,说话简洁易懂 学到啦,大佬好人 学习啦,谢谢大老分享{:1_893:} 大神就是大神,学习啦,感谢楼主 这个大佬的风格和玩玩破解类似,通俗易懂,但是还是有些地方没讲细