用OllyDbg爆破一个小程序

岁酱吖の 提交于 2019-12-01 08:54:47

用OllyDbg爆破一个小程序

一、TraceMe小程序

TraceMe是对用户名、序列号判断是否合法的一个小程序。我们任意输入一组用户名、序列号进行check判断,结果如下:

 

 

 

其注册算法主函数源代码如下:

BOOL GenRegCode( TCHAR  *rCode, TCHAR  *name ,int len)

{

int i,j;

unsigned long code=0;

 

      for(i=3,j=0;i<len;i++,j++)

            {

if(j>7) j=0;

              code+=((BYTE)name[i])*Table[j];    

             }

 

      wsprintf(name,TEXT("%ld"),code);

      if(lstrcmp(rCode, name)==0) 

           return TRUE;

      else

           return FALSE;

 

}

 

  

 

 

 

 

 

 

 

 

二、用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掉,这样之后无论输入什么信息都会注册成功。目前也有很多方法对抗暴力破解,在破解中最关键的是找到那段关键的代码。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!