玩玩破解——小白实战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,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行! 写的很不错,不过建议一下,如果要成系列的,可以把前置要学习的东西先介绍一下,比如查壳,去壳软件,比如OD如何使用快捷键等等,当然这些网上有很多资料,但是如果要想成为一个系列教程的话我觉得还是要有这些东西。
很久不玩破解的小白白路过 大佬,能否把用到的插件也一并打包一下,这样可以更好的促进大家学习,谢谢! 感谢楼主分享 受教啦!:victory: 努力学习 感谢大佬分享 感谢大佬 讲得非常用心,作为小白的我一下子,思路清晰了好多,感谢! 小白喜欢这样的教程 感谢大佬 虽然已破,感谢分享思路. 又开始更新了???