玩玩破解——小白实战4,冰火两重天
本帖最后由 yyhd 于 2021-10-16 00:32 编辑今天,和新人们一起来玩个小软件。
这个软件我上传到附件里,你可以试试。
这个软件很简单,见下图:
看到这里,你应该感到太兴奋了。
脑子里迅速有两个破解思路:
1、搜“注册失败”字符串
2、对MessageBoxA函数下断点
如果你以前看过我的课程,你可能还会有以下的思路:
3、F12暂停法
4、对GetWindowsTextA函数下断点
5、易语言按钮事件(FF55FC5F5E)
6、易语言文本比较通杀命令(test edx,3)
呵呵,总之,办法要比困难多。
如果你有以上这些思路,恭喜你,你已经进步很大了!
你可以用以上的方法试试看,算是温顾一下所学的知识。
不过,我们今天要讲的不是用哪种方法好,
而是要让大家别被习惯性思维所束缚。
好,那么我们就一起来玩玩这个软件。
我们先用搜字符串的方法看看。
我们看到了关键字符串。然后我们转到代码区看看。
见下图:
可是,你发现没有一个跳转能够跳过“注册失败”。
晕了?怎么办?
要不我返回上一层CALL,看看有没有能跳过的?
不行,如果跳过,那也会跳过“注册成功”。
呵呵,有点茫然了吧。
好在,你还有其他办法。
好,我们接着换第二种破解方法——对MessageBoxA函数下断点。
断下来了,但是没有发现有关键跳能跳过失败。
于是,你F8返回到上一层CALL看看有没有关键跳。
见下图:
很显然,没有关键跳,于是你继续F8返回更上一层。
呵呵,还没有,你继续F8。最后来到这里。
见下图:
红色箭头指的位置是我们返回的CALL。
蓝色箭头指的位置有一个大跳转JMP,可以跳过我们的错误CALL。
绿色箭头指的位置有一个JNZ跳转,可以跳过JMP。
呵呵,你这会是不是有些开心了。
按照我们的经验,你只要把这个JNZ改成NOP,不让它跳,那么就成功了。
你动手试试吧!
结果,很遗憾。
你改成NOP后,再点击登录按钮,什么反应也没有了。
扑通,你瞬间从凌霄宝殿跌落恶人谷。
不可能吧,怎么过去的经验失灵了?
别灰心,继续试试。
干脆一步到位,用最NB的按钮事件。
0040100C是按钮事件的段首,你F8跟下去,好像只有0040105E这个位置可以改,你改成NOP试试。
见习图:
又晕了,弹出的信息框里面变成空白了。
我就不信,我搞不定你,再换易语言文本比较通杀命令。
见下图:
呵呵,拨云见日,柳暗花明。
你终于成功的看到了真假码的比较。
欣喜之余,你需要思考的是:为什么用的其他方法不行了呢?
其实,是你的传统惯性思维干扰了你。
因为,大多数的破解教程告诉你的就是“跳过失败,走向成功”。
这八个字已经深入到你的骨髓里。
这个软件其实非常简单。
它与其他软件最大的不同就是:冰火两重天。
呵呵,这个词未必准确,主要目的是更容易吸引大家的眼球。
我想表达的真正意思是:这个软件的正确提示和错误提示是使用了同一个信息框。
换句话说,当你输入假码验证后,无论真假都要经过同一个调用MessageBoxA这段代码。
再换句话说,这个软件对假码验证后,没有分为成功或者失败两条路,成功和失败走的是一条路。
呵呵,冰火两重天的意思就是如此,
正确和错误有时不是完全对立的,正所谓“阴阳交合,佛魔相依”。
那么,你可能要问,既然使用的是用一段代码,那么怎么会有不同的提示信息。
所以,你要注意MessageBoxA这个函数的使用方法。
它有四个参数,其中第二个参数是信息框里的文本内容。
我可以在编程中实现,如果你输入的是假码,第二个参数就是“注册失败”字符串。
如果你输入的真码,第二个参数就换成“注册成功”字符串。
好了,我们总结一下:
本次实践的目的只有一个,就是要在学习过程中要善于破除惯性思维。
学习破解的过程,也是一个“边破边立”的过程。
当然,我们更要清晰地看到,
你的进步和成功的基石在于你对软件流程的理解。
所以,再次强调,要学编程!
否则,你学的只能是皮毛。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!
玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行! 本帖最后由 weixu 于 2021-10-13 22:19 编辑
打开程序随意输入假码--显示“注册失败”--暂停---K---主线程函数过程 / 参数=? user32.MessageBoxA--鼠标右键“显示调用”--
调用来自=只有一条.00401B47 结构=0012F5F0---在段首00401A70 下断点--重新点“失败窗口登陆按钮”---会断在00401A70位置---堆栈区显示“004192c1”返回到只有一条.004192c1---在堆栈区鼠标右键然后“反汇编窗口中跟随”返回到这个地址---004192C1----同样在段首下断点---004192a0--重新点失败窗口进行登陆--堆栈区同样出现返回到地址--004011c6---在004011c1这个CALL下断点--在这里发现004011d5是push 0x52010001和004011fc sete a1,并且信息窗口提示“条件为假 A1=FF”但是当按F8单步走到004011fc时候,“条件为假 A1=0”--也就是说只要把A1=FF(也就是-1)就会走向真码---将004011F7汇编更改为mov eax,-1---“注册成功”---有了这个思路将00401226这个大跳转JE逆向改变也能实现“注册成功”---改变
00401222后面0X0位0x1也一样.。过程很详细就不上图了,感谢楼主让我学到不少知识。么么哒。 我讲一讲我的思路吧。
首先搜索字符串无果之后我就想到了针对易语言按钮事件下断的方法,首先搜索FF 55 FC 5F 5E
然后将几个结果全部设上断点
输入假码后在这里断了下来,我们进call看看
单步f8,我发现在这个call,之后寄存器出现了“破解失败”的字样,所以我在这个call的上面一行重新下断,进这个call看看
一直单步f8走,出现了假码真码的比较
下面有一个大跳,估计就是比较后的关键跳
把它nop掉
运行程序,注册成功,接下来保存就好了!
沙发沙发 谢谢分享,学习下思路 有没有兴趣 写小说啊 文笔太好了
谢谢分享,学习下思路 搬个板凳静静的学习 易语言文本比较通杀命令(test edx,3)
00401094怎么断下的??? 找个沙发,倒杯红酒,凳静静的学习 又来支持下,谢谢
谢谢分享,学习下思路