玩玩破解,写给新人看(第十三集)
本帖最后由 yyhd 于 2021-10-16 00:22 编辑关于“灰色按钮”的破解思路
上一集给大家写了两个小软件做为阶段性的练习,您破解成功了吗?
如果您成功了,我建议您思考一下,我在设计这个软件的时候做了“哪些手脚”,只有明白了这些手脚,而您又是针对性的绕开了,那么才是您最大的收获。
我认为,对于新人而言,破解是否成功不是关键,重要的是您是否发现了要破解的软件在反破解方面的“坑”在哪里?对于这个的“坑”我们用什么方法能够绕过去。
这一集,我暂且不讲这两个练习软件的破解思路,因为还有很多新人们没有去试验。
我们这一集就讲讲破解“灰色按钮”这一种类型软件的基本思路。
首先我们要明白什么是“灰色按钮”,见下图:
这是一个小软件的登陆界面,你会发现“请点击”按钮是处于“灰色”的显示状态,无法点击。
此时你输入账号和密码,然后点登陆,如果你的账号和密码是正确的,“请点击”按钮不再是“灰色”,你可以正常点击,你点击后会出现下图:
这个软件就是我们今天要讲的“灰色按钮”类型的软件。
所谓“灰色按钮”就是指软件窗口上的某个按钮处于“灰色”状态,也就是鼠标不可击状态,这种“灰色按钮”的设计有什么作用呢?
假定某个软件的窗口上有一个功能按钮。
当用户的登录帐号和密码都是正确时,就让功能按钮可点击,然后你点击功能按钮可以执行新的功能,比如打开一个新的功能窗口。
反之,如果用户输入的登陆账号和密码不正确,那就让功能按钮不可点击,用户就被限制使用功能。
拿我们的这个CM(灰色按钮)为例,我们讲讲如何破解这一类型的软件。
我们的破解目标就是当我们输入不正确的账号和密码时,这个“请点击”的按钮也告别“灰色”状态,变成可点击状态,也就是把限制的功能解开。
朋友们,我们开始工作了。
我们先思考一下这个CM的验证流程。
流程为:软件启动后,窗口中的“请点击”按钮处于“灰色状态” → 用户输入账号和密码,点击登陆按钮 → 读取用户输入登陆账号和假码 → 调用算法CALL,计算出真码 → 调用验证CALL对真假码进行比较 → 比较结果为真,“请点击”按钮的状态变为可点击,点击后出现“小牛”图片和弹出“祝你牛年大吉”的信息框;比较结果为假,没有变化。
知道了验证流程后,我们该怎么做呢?
当然还是用我们的破解大法“两头找线索,中间来破解”。
我们首先看验证结果有没有线索?
有,如果成功会有三条结果可做为线索:
一是“请点击”按钮的状态改变为可点击;
二是出现了一个“小牛”图片;
三是出现一个“祝你牛年大吉”的信息框。
好,我们从最熟悉、最基本的方式来试试?
我们可以搜“祝你牛年大吉”这个字符串,也可以下弹出信息框的MessageBoxA函数断点。会来到下图:
接下来怎么办?
你在“祝你牛年大吉”的那一句下个F2断点?
还是在信息框弹出函数MessageBoxA下函数断点?
结果,都断不下来!
为什么?因为只有成功后代码才会走到这里。
晕了吧。
那怎么办呢?这条线索已经断了。
我们接着思考。
当我们从成功的结果去找线索和突破口的时候,会面临一个很重要的问题,就是我们找到的位置都是代码走不到的位置。
那么你怎么设定断点呢?所谓断点,就是必须要代码能够执行到下断的位置,程序才会停下来。
那我们就换个思路,从失败的结果去找线索,我们来看看有哪些线索可用?
当我们失败的时候,只有一个结果就是“请点击”按钮处于“灰色”不可点击的状态。
这条仅有的线索怎么使用呢?
我告诉你,操作系统为按钮的状态显示有一个专门的函数可以调用,函数名字叫做EnableWindow,中文意思就是窗口或者里面的控件(按钮、菜单、输入框等)能否被允许响应鼠标和键盘的输入。
如果允许,按钮就可点击;如果不允许,按钮就不可点击。
好了,我们知道了这个函数,我们思考一下,我们现在的CM是不是必须要调用这个函数?在程序执行的什么位置调用的?
我们再来回顾一下这个CM的验证流程。
刚启动的时候,“请点击”按钮的状态为不可点击。
我们点登陆后,程序根据真假码的比较对“请点击”按钮的状态做出不同的选择。
在整个过程中,是不是总共有两次会调用这个EnableWindow函数的可能。
一个是程序启动后的最初状态,一个是用户点击登陆按钮后的选择状态。
最初状态是我们的代码必然要经过的,后面的选择状态代码有可能经过也有可能不经过(可能是成功时才经过,失败时不经过)。
好,既然我们已经分析清楚了,我们就在最初状态下函数断点。
我们开始动手,把软件拖进OD后,先不运行,我们先下好EnableWindow断点。
用我们以前说的最暴力的下断点的方式就可以。我们打开OD的插件里提供的API常用断点工具,见下图:
选择红色箭头指的“限制程序功能函数”,在绿色箭头指的最下面的“EnableWindow”前打钩,然后按确定,就下好了断点。
我试了一下,第一个也是EnableWindow,但是在第一个上面打钩后,你到断点窗口看下的断点是禁止状态,大家可以试试,如果不是我的问题,就是这个OD有BUG。
然后F9直接运行,就到了下图:
此时,你看右下角的堆栈窗口中红色箭头指的位置,写着FALSE,中文意思就是假。
这个就是表示按钮的状态,假就不可点击,真就可点击。
我们F8返回到上一层CALL。来到下图:
蓝色方框内就是调用EnableWindow函数的位置,这个函数有两个参数,就是CALL上面的两个PUSH后面的数值。
最上面一个数值就是按钮的状态,如果是1表示按钮可以被点击,如果是0表示按钮不可以被点击。
好,我们就在第一个PUSH语句上直接下F2断点,然后重新运行程序,发现断在了我们第一个PUSH语句上,见下图:
我们在信息窗口中红色箭头指的地方看到了0,就是说我们目前断下的PUSH语句后面的数值是0。
刚才说过0就是表示不可点击,1才是可点击。
那么我们现在就把PUSH 后面的值改成1,然后F9运行。
呵呵,我们已经成功了,“请点击”按钮已经不再是“灰色”了。
本节课,主要就是和大家一起分析了“灰色按钮”这种的一般破解思路。
我把本次课程中使用的CM(灰色按钮)发到附件里,大家玩玩看,祝你成功!
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!
玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行! 第十三集!
作业:CM((灰色按钮).exe
先运行程序,发现请点击按钮是灰色的,我们要做的就是让它能点击。尝试输入账号和密码,点击登陆,没有什么变化。只有账户和密码验证正确后,灰色按钮才能被点击,所以中间应该是有一个验证机制的。
三条结果作为线索:
一是“请点击”按钮的状态改变为可点击;
二是出现了一个“小牛”的图片;
三是出现了一个“祝你牛年大吉”的信息框。
用od打开程序,搜索牛年大吉字符串和API信息框,下断点。这个方法不行,理由是它是验证后的结果,代码无法运行到这里,中间的验证机制还存在着,程序过不来。
这里提到了一个新的函数EnableWindow,它可以用来表示按钮的状态,也就是说灰色按钮由它来控制。所以如果在这儿下断点,就行了。其实没完成理解,大概意思这样吧。反正就是多认识了个新函数,它能控制按钮的状态,有判断过程。如果允许,按钮就可点击,不允许,就不可点击。
来到那个API断点工具,在限制程序功能函数中选择第三个EnableWindow,确定。
运行,在堆栈区发现个call,就是这个函数的调用call,跟随它,定位到代码区。
发现EnableWindow的call,上面紧跟着两个push,说是它们分别是两次判断过程。回一下流程,打开程序后,EnableWindow先判断一次,肯定是不允许,在输入账号密码后,再判断一次。那么在第一次push处下断点,看能不能修改它,不就能达到目的了。
在第一个push处下断点,然后重新运行程序(不是继续运行)。
运行后,发现断在了push处,也没有窗口弹出,说明断在了call的前面。代码区下面可看到它堆栈的值为0000000。应该是0为不允许,把这行改为push 0x1,复制保存。
运行保存后的程序,发现按钮可点击了,跳出牛年大吉,成功!
注意:重点是两个push,要搞清楚它们的意义。还有EnableWindow函数的作用。
看到熟悉的灰色按钮,立马掏出上古XP时代就一直有的灰色按钮解锁工具——取窗口句柄丨精易工具箱
秒破!{:301_978:}
别打我我不是故意的呜呜呜呜 真希望你能够出录像教学。 张哥哥 发表于 2021-1-31 21:05
真希望你能够出录像教学。
谢谢朋友的支持。我也只是小白,还没有这个实力和能力。写写自己会的一点东西,希望能用新人们听的懂的话来和大家共同成长。 谢谢楼主分享 不得不顶 这个是个好人 你这些文章,在数年前发表 的话,必然会热度很高,现在基本都要转到x64dbg了,OD真的是快要日落西山 这个是不是可以利用到第二个练习课件?? 自从这个破解教程出来后,现在看到论坛上都在模仿,我想说的是好东西只能被模仿,从未被超越 非常感谢