软件破解示例

  1.       首先用PEID查壳,然后用相应的脱壳工具脱壳,这步比较简单,当然也可以用ESP定律来脱壳,同样不是很困难

  2.       然后就是寻找提示字符串,当我们进行注册时,若输入的注册码不正确,则会有相应的提示,如下:

  

OD载入脱壳后的主程序,搜索字符串“注册码错误”

  

  

找到后双击之,即可看到它在代码中的引用

  

我们在004ACCBB处下断点,然后再点击注册来寻找调用者,程序停在了断点处

  

分析代码,可知弹出这个messagebox的这部分代码是由某处代码跳转过来的,点击004ACCB1处的代码可以看到,是由004ACB4B处的代码跳过去的,如下图所示

  

这是一个条件跳转,若注册码不正确,则发生跳转,否则不跳转,可以看到在跳转之上调用了一个子过程,其实就是来判断我输入的注册码是否正确,跟进去

  

由上图可以看到,此时寄存器的值EAX是正确的注册码,而EDX是我输入的注册码

  

  00404B0B处的代码即进行比较注册码的,输入正确的注册码即可完成注册。

 

 3.当然不可能每次都这样去寻找注册码,彻底破解就需要更改程序的流程了。程序一开始会验证是否已注册,若未注册则会弹出一个提示框,我们要做的就是将这种判断给nop掉,直接进入已经注册的处理中。

 需要改的也不多,如下

  

 原来的是JNZ

  

  改成JE(即JZ)

  

posted @ 2011-08-23 20:06  lotusJade  阅读(435)  评论(0编辑  收藏  举报