zoukankan      html  css  js  c++  java
  • 软件破解示例

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

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

      

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

      

      

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

      

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

      

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

      

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

      

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

      

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

     

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

     需要改的也不多,如下

      

     原来的是JNZ

      

      改成JE(即JZ)

      

  • 相关阅读:
    hdu_5961_传递(bitset)
    hdu_5963_朋友(找规律)
    hdu_5968_异或密码(预处理+二分)
    hdu_5969_最大的位或(贪心)
    hdu_5965_扫雷(递推)
    hdu_5950_Recursive sequence(矩阵快速幂)
    hdu_5286_wyh2000 and sequence(分块)
    [BZOJ1951][SDOI2005]古代猪文(数论好题)
    [BZOJ2659][WC2012]算不出的算式(几何)
    [BZOJ 2656][ZJOI2012]数列(递归+高精度)
  • 原文地址:https://www.cnblogs.com/lotusJade/p/2151171.html
Copyright © 2011-2022 走看看