学习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。保存。运行:
支持一下,学习了{:6_202:}
{:5_117:}很不错的总结,说明你学到不少了
只要能总结出来,就说明学习到了知识!
感谢楼主,收下了,有空学习下
支持一下,学习了
[快捷回复]-感谢楼主热心分享! [快捷回复]-学破解防逆向,知进攻懂防守! 很好很强悍,坚持下去哦~