用OllyDbg爆破一个小程序
一、TraceMe小程序
TraceMe是对用户名、序列号判断是否合法的一个小程序。我们任意输入一组用户名、序列号进行check判断,结果如下:
其注册算法主函数源代码如下:
|
二、用OllyDbg对编译后的exe文件进行分析
用OllyDbg软件载入TraceMe.exe文件:如下:
找到关键代码处:
其二进制代码和对应的汇编代码如下:
85C0 TEST EAX,EAX; eax=0表示注册失败,eax=1表示注册成功
74 37 JE SHORT TraceMe.004011F3;如果不成功则进行跳转
那么我们只需要在此处进行干涉,不让其进行跳转,那么就表示注册成功。我们只需要把二进制代码改为nop nop,即90 90即可。
如下所示:
我们把74 37二进制代码成功改为90 90,但是这样改只是改了内存中的数据,我们要使修改一直有效就需要把这个修改写入内存中,如下所示:选中修改后的代码,单击右键,执行菜单“复制到可执行文件”—“选择”,如下图所示:
保存为TraceMe.exe文件。
三、重新执行爆破后的TraceMe文件
先用之前的用户名,序列号进行测试,测试通过。
再随机输入一组用户名、序列号,同样测试通过:
四、几点小结
软件进行版权保护使用序列号是一种常用的方式,进行破解最好的方式是找出注册的算法,然后写出注册机。退而求其次是进行暴力破解,把注册算法中进行判断是否成功那段代码直接进行nop掉,这样之后无论输入什么信息都会注册成功。目前也有很多方法对抗暴力破解,在破解中最关键的是找到那段关键的代码。