chuiyan121 发表于 2022-2-15 22:12

The038. 吾爱培训,《04:击破程序最坚固的堡垒》讲师:小生 [破注册码、去网络验证]


The038. 吾爱培训,《04:击破程序最坚固的堡垒》讲师:小生 [破注册码、去网络验证]
关于吾爱破解论坛官方入门教学培训第一期,我的学习记录,如有疑问欢迎交流指正。^_^
这集是小生大牛破解注册码、去网络验证、去自校验的实战课程。

0、打开软件,最先关注的应该是注册吧,搞破解嘛,职业病。^_^
https://s4.ax1x.com/2022/02/15/HWPbH1.png

1、上图显示“未注册版本”,OD载入程序,中文搜索字符串(无意间发现Ctrl+D是智能搜索的快捷键,Get了),然后Ctrl+F搜索已注册,发现如下字符。
https://s4.ax1x.com/2022/02/15/HWPIc4.png

2、双击跟进,发现上一行有个跳转,跳过了已注册版本,F2下断点。上面第二行比较00579F24的值是否为0,这个比较关键,应该是为0就是代表未注册,同样F2下断点。
https://s4.ax1x.com/2022/02/15/HWPHBR.png

3、接下来查找00579F24在程序中哪些地方被赋值了,查询方法为:查找->所有常量。
https://s4.ax1x.com/2022/02/15/HWP7u9.png

4、在常量对话框十六进制处00579F24,有符号、无符号自动生成,确定。出现【参考】窗口,这7处就是00579F24被赋值的地方了。
https://s4.ax1x.com/2022/02/15/HWPojJ.png

5、在【参考】窗口右键,在每个命令上设置断点,发现所有赋值地址都下断点了。
https://s4.ax1x.com/2022/02/15/HWPLAx.png

6、重载程序,F9运行,断在00541650处,【参考】窗口可以看到7处赋值,有5处是赋值为0,变量赋值只有dl和al。暂且认为dl和al的值决定了注册是否成功,继续调试。
https://s4.ax1x.com/2022/02/15/HWPX4K.png

7、我们只是在赋值的地方下了断点,为了准确的反映程序的赋值情况,需要在函数开始处下断,并重载,这样就会停在函数头开始逐步调试分析程序。向上翻,看到上个函数结尾的retn后,在0054159Cpush ebp处下断。
https://s4.ax1x.com/2022/02/15/HWPON6.png

8、Ctrl+F2重载,F9运行,停在0054159C,F8单步,仔细观察程序的变化。期间看到了“SN”字样(应该是调用了注册码),途中又F4跳过了2个循环(应该是用来判断注册码的位数),接近断点处,有两个cmp比较都没有跳转成功(下图我写了注释,不知道对不对),也就是dl没有被赋值为1。
https://s4.ax1x.com/2022/02/15/HWPv9O.png

9、这个跳转成功了,刚好跳过了dl赋值为1的地方,想象一下,会不会是dl为1时就注册成功了呢?
https://s4.ax1x.com/2022/02/15/HWPx3D.png

10、不管怎样,dl赋值为1肯定有作用,先试着将0054164C的跳转NOP,让dl成功赋值为1。保存文件,覆盖当前文件qqqf.exe,覆盖的目的应该是OD记录了之前的注释和断点,重载时可以保留这些内容。建议在保存文件前将原来的qqqf.exe备份。重新载入OD运行到如下图的地方,发现dl的值为1,00579F24也被dl赋值为1了。
https://s4.ax1x.com/2022/02/15/HWPzge.png

11、吸取上面经验,0x579F24赋值为0就凉凉了,因此这个跳转不能实现,直接NOP掉。
https://s4.ax1x.com/2022/02/15/HWiSjH.png

12、继续往下,如果0054168C这个跳转实现,则后面0054169A的跳转正好跳过给al赋值为1的代码,因此0054168C这句也要NOP掉。
https://s4.ax1x.com/2022/02/15/HWiCDA.png

13、00541696这句是跳转到给al赋值为1的,但是跳转为实现,这里需要让它实现,将jg修改为jmp。
https://s4.ax1x.com/2022/02/15/HWiFEt.png

14、跳转成功后,al和0x579F24值都为1。保存所有修改为exe文件,覆盖当前qqqf.exe文件。
https://s4.ax1x.com/2022/02/15/HWiPHI.png

15、运行qqqf.exe程序,打开注册窗口,这里填写的注册码不能少于12位。为什么是12位,我用16位,20位,24位都试过了,不同程度报错,没弄明白。
https://s4.ax1x.com/2022/02/15/HWiVC8.png

16、填写任意12位字符,确认后程序自动重启,然后显示为已注册版本。但左下角显示“正在验证…”,应该是开启了网络验证,记住此信息去OD搜索一下字符串。
https://s4.ax1x.com/2022/02/15/HWiZ8S.png

17、OD载入qqqf.exe程序,中文搜索字符串Ctrl+D,搜索“正在验证”,双击跳转到下图,这个函数就是网络验证的函数。
https://s4.ax1x.com/2022/02/15/HWikUP.png

18、最便捷的处理办法就是在函数起始位置使用retn大法。修改后保存文件覆盖当前程序。
https://s4.ax1x.com/2022/02/15/HWiA4f.png

19、网络验证解除,注册成功!
https://s4.ax1x.com/2022/02/15/HWimvQ.png

20、本集由于篇幅较长,只记录了破解SN注册码、去网络验证,其实程序还有自校验(俗称暗桩)如下图,下集再来记录解决自校验问题。
https://s4.ax1x.com/2022/02/15/HWiuuj.png



scncrenyong 发表于 2022-3-1 10:36

确实挺详细的,
异或 寄存器本身(xor eax,eax)    就是将该寄存器置0

直接改跳转有问题的话,就进跳转前的call看一下返回值和调用

13729181580 发表于 2022-2-15 22:14

感谢分享!

wbzb 发表于 2022-2-16 07:59

change 发表于 2022-2-16 09:28

写得不错,过程很详细。

chuiyan121 发表于 2022-2-16 09:34

wbzb 发表于 2022-2-16 07:59
很好的技术贴,赞一个

感谢支持!{:1_893:}

牛人王老五 发表于 2022-2-16 09:54

很详细的记录贴, 对初学者很有帮助! 感谢!

我今天是大佬 发表于 2022-2-16 10:56

真的是非常详细的记录贴了, 感谢分享

taozhi 发表于 2022-2-16 11:18

楼主厉害多多需要这样的文章

wbzb 发表于 2022-2-16 14:30

会成功的人 发表于 2022-2-16 14:36

谢谢楼主分享的技术贴。
页: [1] 2
查看完整版本: The038. 吾爱培训,《04:击破程序最坚固的堡垒》讲师:小生 [破注册码、去网络验证]