yyhd 发表于 2021-1-30 11:53

玩玩破解,写给新人看(阶段练习1)

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

大家已经看了十二课了,辛苦了。


今天周六,大家也该休息一下了。


我们就不讲课了。大家一起HAPPY。


我写了小的练习软件,做为新人学习课程的知识的阶段性练习,大家一起玩玩。


呵呵,软件还是非常友好的。


不过,既然我写出来让新人们做为练习,就一定不会太容易。


你可能要把前几课学过的知识都试试看看。


祝大家成功,在今天再次享受破解成功的乐趣!


如果你破解成功,可以把破解成功的截图和破解思路发上来,和大家一起分享,共同进步!


如果今天还有空闲,我会再写1个练习软件,也放在这个贴子里。所以抽空你再回来看看有新的练习软件吗?


光学不练,等于白干!


如果您已经不是新手,我写的教程和练习软件就不适合您了,因为对您来说就太小儿科了,所以请论坛上的大神们多多包涵。


我发的这个CM,是根据我们以前所讲的知识有针对性的设计的,通过练习,你会对过去讲的一些知识有更加清晰的认识,才会把一些知识点串联起来。


既然是同步的阶段性练习,我不会在CM中增加超过新人的破解能力的陷阱,会留下一些线索让你能够分析。


所以你在破解的过程中,要多问几个为什么?

练习用的CM,我会等大家自己试试以后专门讲讲,讲什么?就讲我在软件编写的时候为“新人们”设置了哪些反破解的“障碍”的。


学破解的乐趣,就在于攻防对抗。


我觉得这种针对性的阶段性练习,为每个软件设置不同类型的“障碍”,目的是让新人们在练习中引发思考,通过练习会对所学过的知识印象更深刻、理解更深入。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!

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










dydsaf 发表于 2021-1-30 15:45

本帖最后由 dydsaf 于 2021-1-30 16:04 编辑


哈哈哈,乱搞乱搞成功了

讲一下过程(纯运气哈哈)
1.程序拖入OD按下F9运行起来,然后E语言定律 00401000(其实这个具体是啥我也不太清白),来到此处

2.然后中文搜索,可看到三个回显的内容都在这

3.准备下断点,我这里先是在MessageBoxA和MessageBoxB这两个函数这下断点,发现拦不下,程序直接就弹窗。后来又在刚刚用中文搜索搜到的登录失败那里下了个断点,还是没有断下来(刚开始到这里的时候已经开始有点懵逼了)

4.后来鬼使神差的在“请输入账号密码”这里下了个断点,断下来了!!!不过走了两步就弹窗了,好,又懵逼了,就来论坛看各位大佬有没有什么思路,看见有个大佬说程序是先判断有没有输入账户密码,去找了一下,发现就在上面有个跳转,而且这个跳转刚好能跳过这个没有输入账户密码的弹窗


5.现在来让它跳过弹“请输入账号密码”的那个,然后跳到00402282这里,然后后面我就不清白了(看不懂汇编),就暂时一步一步跟过去,看它到哪个地方弹窗

6.跟着跟着发现一个非常可疑的地方,有两段差不多的代码,上面有一个跳转,直接跳过去的话走两步就弹窗登录失败,到这应该懂得都懂了



本人小白刚接触破解没多久,不懂的地方很多,写着记录一下,大佬勿喷

哈哈哈,破解成功的喜悦,继续加油,感谢楼主做出这么好的教程{:301_987:}

夜弦风 发表于 2021-1-30 17:32

随便输入账号密码,先看一下弹窗。
试了试字符串破解,找不到关键跳转,改变思路。
下了信息框断点,断不下来,在观察一下,其实可以发现这是个窗口,并非易语言自带信息框。
下断点,创建窗口断点,CreateWindow,CreateWindowExW,CreateWindowExA
再次点击登录,断下
往下翻,找到第一个“返回到...”
选中这一行,按回车。
盲猜附近应该有创建窗口代码,易语言创建窗口都有一样代码,直接搜索“push 0x10001”
来到这里
可以发现一个判断包含着两个窗口,那么猜测另外一个是登陆成功的窗口。
在判断上面下断点,继续运行,再次点击登录,程序再次中断。

双击Z坐标的值改为0(改变跳转方向),继续运行,成功破解。

本人菜鸡,大佬勿喷。

xiaoyu2032 发表于 2021-6-22 00:24

最近开始追大佬的教程,很不错,很适合新手。
这两道体,有弹窗的那道,用弹窗API下断点,没断下来,因此怀疑弹窗是用子窗口做的,因此用push 10001下断,问题解决。
反而是只提示未注册这道体,感觉无从下手,翻看了大家的回帖才开始有思路。
有提示用“SetWindowsTextA”下断点的,发现共有两个断点,但这个断点断在验证之后,不好单步往前追。
也有说用“GetWindowsText”下断点的,但这个断点只要鼠标一移到程序窗口就断了,根本点不中按钮,单步跟了半天也没找到有用的信息。最后,通过按钮的特征码“FF 55 FC 5F 5E”,查找字符串“FF 55 FC 5F 5E”设置断点,共有两处。先禁用断点,运行,出现界面后,再启用断点,输入帐号、密码后,点击登录,然后断在下图处:

F7单步步入(这里不能F8),然后按F8单步执行,一直到这个长跳转位置

这是一个可疑位置,做个标记,然后再继续F8单步执行,在长跳转完成后6步时,寄存器出现“未注册版本”字符串,说明此处验证已经完成,因此前面的长跳转前的比较指令很有可能验证的关键,将4022C2的跳转指令NOP掉,保存测试,通过。

Rain_Mountain 发表于 2021-1-31 00:00

第二个完成 在SetWindowsTextA断点

tianpeng117 发表于 2021-7-12 22:25

说下“提示未注册的坑”,如果我们按照最常规最简单的,00401000的然后再搜索“未注册版本”,我们确实能搜索得到,不过我们往上翻会发现这个子程序根本没有被调用
也就是说这个未注册版本虽然存在,但是并未使用,换句话理解就是内存虽然存在但并未使用,躲避了这个坑从结果尾来找跳转是不可能实现的(在我这个菜鸟看来),那么从结果头开始实现的话无非就是函数断点,我使用的是GetWindowTextA,为什么不用SetWindowTextA,因为当时并不知道有这个断点函数,我本人是个做java web的,对C方面的函数真的不是很熟悉(本人表达能力不是很强,希望别喷)

大兵马元帅 发表于 2021-1-30 13:18

我成功了,成功的下载了软件!!!!哈哈

pizazzboy 发表于 2021-1-30 13:01

大佬写得好!字符串比较迷惑人,用其它方法成功了。

yujang123 发表于 2021-7-26 01:24

本帖最后由 yujang123 于 2021-7-26 11:08 编辑

第一个CM
push 0x10001搜窗体id,给前面的跳打上断点,随便输入一个账号假码F8调试,可以看到假码与真码的比对校验,由此可以看到账户真码是52POJIE(注意全大写)
然后换上真码账号后重新调试,会发现账号校验正确,进入到密码的假码与真码比对校验,由此可以看到密码的真码为5211314
输入真码,登录成功
不知道是不是瞎猫碰上死耗子{:301_1004:}

第二个CM
bp SetWindowTextA,断点后随便输入一个用户名和密码点击登录,程序被断下,alt+F9跳至程序领空,F8追踪,发现比对校验,往上查看发现je大跳,尝试修改为jne,成功.
跟了几次call,对比了一下,发现密码就是账户+808+账户位数

Casuwin 发表于 2021-3-22 11:15

liangge929 发表于 2021-3-22 09:01
非常感谢!!!
之前只知道判断值是为1还是0,然后跳转,原来就是判断的ZF的值啊。我这样理解是对的吗: ...

如果只是想要执行跳转,这么改没什么问题。但是如果自己编程,就得理解jz和jnz的区别。
举个栗子:
cmp eax, eax
jz/jnzAddress
cmp这句对eax值进行比较,若想在eax - eax = 0即两值相等时跳转,cmp指令修改ZF标志位为1,这时候需要用jz(jump if zero)或者je(jump if equal)指令执行跳转;若eax - eax != 0时跳转,cmp指令仍然修改标志位为1,但需要用jnz(jump if not zero)或者jnz(jump if not equal)指令执行跳转。
当然,如果只是逆向,那直接修改标志位结果不会有问题,但是最好还是明白理解jz和jnz的区别。

liangge929 发表于 2021-3-5 10:54

dydsaf 发表于 2021-1-30 15:45
哈哈哈,乱搞乱搞成功了

讲一下过程(纯运气哈哈)


双击改为1
这一步不懂

wink223 发表于 2021-1-30 12:00

沙发沙发

jobinLi 发表于 2021-1-30 12:09

谢谢为像这样的小白提供学习方向!放假就开始入门学习:lol

众益科技 发表于 2021-1-30 12:14

大佬能不能弄套视频解说课程

serendip 发表于 2021-1-30 12:38

感谢分享,这几天认真实践操作一下

wsyalh 发表于 2021-1-30 12:39

谢谢为像这样的小白提供学习方向!放假就开始入门学习

wangyut85 发表于 2021-1-30 12:43

老师真好

拾纷芳 发表于 2021-1-30 12:45

感谢分享

不羁的风儿 发表于 2021-1-30 13:01

感谢大佬每日坚持更新!感恩
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 玩玩破解,写给新人看(阶段练习1)