ajun2019 发表于 2022-5-30 21:04

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,我放在下面啦。大家可以试试,练练手!相信对大家破解思维的提升会非常有帮助的!











ajun2019 发表于 2022-6-1 19:58

看到有人说怎么找push,还有人说这是海底捞针。我觉得,这只能说明一个问题,就是他们根本没有去跑过这个程序,只有跑过这个程序,这段代码的人,他们才知道为什么会是这个push,这个call。

当然,我也可以给个答案!那就是push根本不是最重要的,算法call的位置才是!

tyz1234 发表于 2022-6-1 11:56

okldh 发表于 2022-5-30 22:20

太棒了,谢谢分享

taxuewuhen 发表于 2022-5-30 22:25

多谢分享 看看

wksh 发表于 2022-5-30 22:49

大师,说话简洁易懂

狼灭大帝 发表于 2022-5-31 01:35

学到啦,大佬好人

tyz1234 发表于 2022-5-31 06:11

wanlinwo 发表于 2022-5-31 07:41

ilpj 发表于 2022-5-31 08:14

学习啦,谢谢大老分享{:1_893:}

跑得快有糖吃 发表于 2022-5-31 08:35

大神就是大神,学习啦,感谢楼主

shaokui123 发表于 2022-5-31 08:40

这个大佬的风格和玩玩破解类似,通俗易懂,但是还是有些地方没讲细
页: [1] 2 3 4
查看完整版本: CM破解教程详解-让小白破解思维极速提升!