软件保护

简单算法注册保护:

输入用户名序列号,计算并检测序列号;

简单算法注册保护的对抗:

①修改关键指令:暴力破解;patcher
②dll注入或使用加载器(使序列号计算结果展示出来);内存注册机
③还原本身算法;keygen

复杂算法注册保护:

通常内置rsa公钥/签名/绑定硬件码/注册信息分段校验/运行时校验等;

复杂算法注册保护的对抗:

①patch
②补丁修改公钥,使用自己的公钥对;

网络加密及硬件加密:

本质上与本地加密相同/运行前检测??

网络加密及硬件加密的对抗:

①patch
②模拟与远程端的通信,及模拟执行;
③使用中转程序,从服务器获得远程执行结果;

复杂系统注册保护:

以上内容混杂

附:常用–壳(压缩壳/加密壳):程序运行前的检测,校验/程序注册机制/程序运行二次检测

软件破解及对抗

程序分析及对抗:

  • 代码变形mutation;
  • 代码膨胀expansion;
  • 花指令;
  • 代码乱序;
  • 平坦化;

程序调试及对抗:

  • 系统API检测程序是否处于被调试状态;
  • 检测调试器窗口信息、状态码;
  • 检测调试器驱动,符号;
  • 程序执行行为检测(如检测运行时间,时间较长则处于被调试状态);
  • 利用驱动接管本身程序的中断,阻止被调试器接管;
  • 利用驱动修改内核参数,阻止程序被调试;
  • 双进程反调试;

程序修改及对抗:

修改:文件补丁技术及工具;
对抗修改: hash校验/内存关键部分CRC校验/ipk劫持等;

dnspy:.NET程序逆向工具