hktkzyz 发表于 2015-3-19 21:24

学习m大教程关于SMC补丁破解的总结

本帖最后由 hktkzyz 于 2015-3-19 21:31 编辑

感谢mm457老大提供的教程。https://www.52hb.com/thread-3357-1-1.html

1、脱壳简单,esp即可,程序是Borland Delphi 6.0 - 7.0。这些m大都说了。
2、DEDE让人失望,找到的唯一的按钮是 order registered copy now! 这个按钮。
3、od载入脱壳后文件,运行,出现注册窗口后,暂停,显示调用堆栈,

右键最后一个,显示调用,转到47BF83这个call,推测此call与注册窗体有关,如果把他干掉,可能会跳过注册窗体,向上找能跳过他的跳转,结果找不到,所以推测整个这一段应该是个子call,段首0047BDFC下断,准备回溯。(call下不下断点无所谓了)

4、重载,运行,断下,堆栈窗口,反汇编跟随,回到上一级call:005352E5
(这里请留心一下:我们是从0047BDFC——回溯到005352E5的)

很明显,上面jnz,可跳过此call。jnz下断。
5、重载,运行,断下,jnz跳转没有实现,(所以运行到下面的call,显示出来注册窗体),我们改je。F9,程序直接启动。
保存exe。(这时保存会出错,因为运行了程序后,程序结构可能发生变化,所以要重载程序,ctrl+G:5352DA到jnz这里,修改跳转后保存程序。)
6、od打开修改过的程序,运行,程序启动(如出错,参考上一步),help-about里都是试用版,未注册的信息。打开help-register,和之前程序启动时的注册窗体一样。所以重复第3步,.........
7、重载,运行,help-register,断下,堆栈窗口,反汇编跟随,回到上一级call:005346B0
是的,再看一下第4步,没错,。。。。
在程序启动时,0047BDFC是回溯到005352E5的,现在0047BDFC回溯到005346B0。
和之前不一样,我们肯定不是要消灭这个注册窗体,我们目的是使注册成功。所以我们先下断,准备分析:

(个人习惯先把之前确定不用的断点禁用0047BDFC,本例如果不禁用的话,可能会不便分析)
8、重载,运行,help-register,断下,走一步弹出注册窗体(实际就是0047BDFC这段来负责窗体内容的),填写好信息,点击注册,od里向下走了一步:

继续F8,到了jnz处,跳转未实现,大胆猜测一下,未实现是不是意味着注册失败?改je,保存。
9,od打开刚修改过的程序,发现依然注册不成功。
重载,用m大字符串的方法,分别修改两处跳转je为jnz。保存。运行:










罗鸭鸭丶 发表于 2015-3-19 21:38

支持一下,学习了{:6_202:}

彡墨鱼灬丶 发表于 2015-3-19 21:43

{:5_117:}很不错的总结,说明你学到不少了

Shark恒 发表于 2015-3-19 21:48

只要能总结出来,就说明学习到了知识!

Scar-疤痕 发表于 2015-3-19 22:00

感谢楼主,收下了,有空学习下

有何不可 发表于 2015-3-20 11:06

支持一下,学习了

hackysh 发表于 2022-2-21 15:51


[快捷回复]-感谢楼主热心分享!

我是好人 发表于 2022-2-21 16:44

[快捷回复]-学破解防逆向,知进攻懂防守!

ghostxu 发表于 2022-3-2 18:01

很好很强悍,坚持下去哦~

别管我了行 发表于 2022-3-9 07:21

页: [1] 2 3
查看完整版本: 学习m大教程关于SMC补丁逆向的总结