yyhd 发表于 2021-9-28 12:29

玩玩破解——小白实战1,你也行!

本帖最后由 yyhd 于 2021-10-16 00:34 编辑

我们今天就拿吾爱论坛上网友新发的一个CM来练习一下。

一些高手都进行了破解,但是往往只发了一个破解成功的图片。

到底怎么做的呢?这才是新人们最想知道的事情。




我们首先拿到一个软件后,养成一个好的破解工作习惯。

第一步:查壳。

用PEID查,无壳。

第二步:查编写语言


用DIE64查,是VC++的。

以上查询的方法在我的玩玩破解教程系列里有详细的介绍,在此略过。

因为易语言编写的程序,用DIE64查也是提示VC++,所以在此最好你再查询一下是不是易语言编写的。

为什么要再查是不是易语言呢?

因为易语言编写的软件有更便捷的破解方法,比如文本比较通杀命令(test edx,3),按钮事件(FF55FC5F5E)等,还有专门的分析工具。

那怎么查软件是不是易语言编写的呢?

最简单的办法是:

你把CM6拖进OD里,然后转到401000处,看下图:




看到没?在401000的地址后面的汇编代码是“xor eax,eax”,这句代码特征就是说明该CM6是易语言编写的。

当然,你还可以通过FF25命令找有没有易语言体来判断。

到此,我们已经知道了如下的一些事实:

第一、该软件没有加壳。

第二、该软件是易语言编写的。
然后,我们就开始进入正式的破解工作。

第三步:用OD来破解软件

我们依然先采用好的破解工作习惯。

1、我们先运行一下软件,看看是什么样子



我们得到的结论是:当你输入一个假码,点注册后,会弹出一个对话框,上面有关于失败的提示“请输入文字小于0”这个字符串。

2、破解尝试
我们在此时有了最基本的两种破解方法:一是搜字符串,一是用对话框(MessageBox)函数断点。

先用搜关键字符串的办法,因为这是最便捷的破解方法。请看下图:



结果是:我们搜到了关于注册成功的字符串,没有搜到关于失败的字符串。这个方法我们放弃。为什么呢?

因为只搜到关于成功的关键字,如果你在关于成功的地方下断,当你输入假码登录后,程序断不下来,因为程序走不到成功的代码处。

那我们就用第二个方法,对对话框函数下断。

这个方法可以。你可以断下,然后返回三层,就到了下面的位置。



这里就是关键的位置。你可能要问,我怎么知道是关键位置呢?

因为有一个大的跳转能够跳过我们刚才返回的CALL。

换句话说,就是有一个大跳转能够跳过我们的提示失败信息的对话框。

你修改了大跳转,改成JMP,那不就不会出现提示失败信息的对话框了吗?

跳过了失败,就走向了成功!

找到了关键代码处,接着该怎么办呢?

你到关键代码处的段首进行下断。见下图:



红色箭头指的地方就是段首。

再看一下绿色箭头指的地方?

我的OD里的注释里有“核心支持库命令”。你的估计没有?

这个不是我自己注释的。是我用了一个OD中专门用来分析易语言的插件所提供的功能,这个插件的名字叫做E-debug,你在吾爱的OD论坛的插件版块可以找到。

这个插件是非常好用的,它会把易语言编写的程序的API函数的功能注释出来,便于你分析代码。

看看下图:



你看看用了这个插件后,红色箭头指的位置提示,是不是方便你进行代码分析了?比如“取文本长度”,显然是要验证假码的长度对不对。

至此,你找到了关键的代码段,你就已经接近成功了!

这也就是我以前说的,破解最关键的是能不能找到合适的断点。

呵呵,别着急,我们还没有破解成功呢?

我们接着看,

你输入假码点登陆,程序会成功的断在00401177段首的位置。

然后,你F8一步步的往下跟,小跳转不用管,看有没有大跳转。

你会发现004014B7这个地址是一个大跳转,当前是跳的,你改成不跳,就是NOP。




还没有完,继续跟。




00401569这个地址处又是一个大跳转,此刻是跳的,你改成NOP,让他不跳。

然后按F9运行。见下图:



看到一个提示“注册成功,请发帖炫耀”的对话框,你成功了!

开心吗?兴奋吗?爽吗?

呵呵,你已经向全世界证明了一个真理。

人与人之间其实就是零距离,你行,我也行!

开心一会就行了,你其实还有一些扫尾工作要做。

当你点确定后,会出现这个界面。



我擦,还有彩蛋?

不拿白不拿。

你点击彩蛋后,出现下图:

你确定后,没有再出现什么了。

至此,你认为你的破解工作已经完成了吧。

NO,这是洋话。换国语,就是还没有。

你还记得搜字符串时看到的关于注册成功的字符串吗?

呵呵,你还记得大明湖畔旁边小树林中的夏雨荷吗?




你刚才的破解,有这样的提示吗?

嗯,沉思片刻,好像没有。

不是好像,是真的没有!

要不,作者怎么说还有一个彩蛋呢?

你刚才拿彩蛋的时候费力了吗?没有吧。

好,我们接着继续。

怎么做的?

你有办法找到关键的断点吗?

你转到刚才搜到的“恭喜注册成功”字符串的地址处,你会发现有一个跳转能跳过它。见下图:

你把JZ这句代码改成NOP,让它永远跳不过去。



呵呵,至此,你是真的成功了!
总结一下,这个软件的破解需要改动的是三个位置的跳转。

给新手的练习,我只是采取了爆破的方法,不涉及算法。

另外:

你还可以用F12暂停法来破解,这个办法更直接。

就是当遇到弹出对话框,你就如下操作:




第一步:按红色箭头指的暂停键。

第二步:按绿色箭头指的K键。

然后会出现下图的窗口:


你转到红色箭头指的代码位置处,下断,然后F8跟一下,也可以很快到达关键位置。

说明一下:
上面这个图是当前程序暂停时调用堆栈的图。

当你出现信息框时,你暂停程序,然后点K键后,程序此刻暂停在调用信息框的函数内,这个图就是此刻这个函数的堆栈调用记录。

你要特别记住,这个图中越是往上的地址才是最新的代码。

你可以想象成堆栈图就像是垒砖。

你先放的砖在下面,你后放的砖当然在上面。

比如这个图,程序会先执行最下面的调用来自“00403057”这个CALL,然后再去执行上面的“76AFED49”这个系统API函数。

知道这个有什么用?

用处就是你知道堆栈里CALL的调用关系:下面的CALL会调用上面的CALL。你在OD里F8层层返回,实际上就是从上面的CALL返回到下面的CALL。

呵呵,本次实践到此结束,错误之处敬请大佬们见谅!

我是站到小白的角度去分析,运用以前学过的知识,然后一步步破解,目的就是让新人们能够在实战中把知识融会贯通。

我是小白,一直挺白,也喜欢小白。

附件里是CM6小软件。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!

玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行!

xuewuchen123 发表于 2021-9-29 08:12

写的很不错,不过建议一下,如果要成系列的,可以把前置要学习的东西先介绍一下,比如查壳,去壳软件,比如OD如何使用快捷键等等,当然这些网上有很多资料,但是如果要想成为一个系列教程的话我觉得还是要有这些东西。
很久不玩破解的小白白路过

xiaoxue58178 发表于 2021-9-28 18:52

大佬,能否把用到的插件也一并打包一下,这样可以更好的促进大家学习,谢谢!

有梦想就好 发表于 2021-9-29 05:51

感谢楼主分享

wangez 发表于 2021-9-28 12:58

受教啦!:victory:

wgc3306 发表于 2021-9-28 13:07

努力学习

iyeoman 发表于 2021-9-28 13:16

感谢大佬分享

菜鸟--不二 发表于 2021-9-28 13:23

感谢大佬

xiaoxue58178 发表于 2021-9-28 13:26

讲得非常用心,作为小白的我一下子,思路清晰了好多,感谢!

wqccwang 发表于 2021-9-28 13:42

小白喜欢这样的教程

huangjiahao123 发表于 2021-9-28 13:58

感谢大佬

wqipk 发表于 2021-9-28 14:04

虽然已破,感谢分享思路.

krcakgege 发表于 2021-9-28 14:12

又开始更新了???
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 玩玩破解——小白实战1,你也行!