破解图章制作系统MakeSign用的是修改十六进制文件加上爆破的方法。但大家都知道,破解的境界里,爆破只是最简单的一级,那么这次,我们就进步一下,编写一个内存注册机。
其实在0Uyice中分析软件注册流程时我们就可以发现,这个软件有个软肋就是明码比较,注册部分将注册码保存在寄存器中,很容易追出注册码,但我们不能满足于简单的追码,还要知道如何编写这类软件的注册机,下面就操刀动手吧。
软件的脱壳以及去除自杀代码上次已经提过了,这次就不再赘述,另外上次写到用ESP定律脱壳,这里再补充-种ASPack壳的脱壳方法:同样的载入未脱壳的软件,弹出的对话框选择“否”,右键查找-命令序列,输入下面的命令
push 0
retn
在跳转处按F4,然后F8单步两三次就到oep了。脱壳后的软件载入到Ollyice中,利用字符串参考下断,还是在00538F73处下断点,F4跟进。
这部分就是注册部分的主线了。在单步跟踪的时候,经过00538DE2 I. E8 91BDECFF call00404878处时,软件就将明码存放到寄存器中。
这样编写内存注册机就不难了,这里用Keymake这款软件做示范编写。具体步骤如下:
1.打开注册机编写器Keymake,选择菜单项的其它一内存注册机,在程序信息部分载入要破解的程序,并单击左下角的添加。
2.再添加数据对话框中输入以下数据:
输入完后单击添加。这里给朋友们补充一下,第一字节即第一个机器码,E8 91BDECFF第一个当然就是E8,指令长度也很好判断,通俗点说两个字就是一个指令,故指令长度为5。
3.添加后在程序右侧注册码区域选择内存方式一·勾上寄存器并选择寄存器为EAX即可。
4.现在已经基本完成了好了,另外用户信息处自己设置就好,此时单击右下角的生成,选择自己喜欢的注册机外观,生成后注册机就OK了。
现在总结以下,理论上有在注册是在寄存器中进行源码比较的程序都是可以通过此种方法编写注册机的。但利用别人的软件制作注册机还不完美,我们也可以自己编程解决这个问题。
这个程序只是将注册码以对话框的形式显示出来,精通C的朋友可以修改完善一下。另外,此处代码可以通用的,不同软件只需修改不同
信息即可。