加密解密-软件保护的若干忠告

读书时间:
2018

  • 尽量开发自己的保护机制,不要过分依赖不是自己开发的任何代码。在不影响效率的情况下,保护的核心代码用虚拟机保护软件处理一下,如vmprotect等。
  • 不要太依赖壳的保护,加密壳都能被解开或脱壳,现在许多壳转向虚拟机加密方向,多利用这方面的功能。
  • 增加对软件自身的完整性检查
  • 不要采用一目了然的名字来命名函数和文件
  • 尽可能少地给用户提示信息
  • 将注册码和安装时间记录在多个不同的地方
  • 检查注册信息和时间的代码越分散越好
  • 不要依赖getlocaltime()和getsystemtime()这种众所周知的函数获取系统时间
  • 如果有可能,可以采用联网检查注册码的方法,并且数据在网上传输时要加密
  • 编程时在软件中嵌入反跟踪的代码,已增加安全性
  • 在检查注册信息的时候插入大量无用的运算以误导解密者
  • 给软件保护加入一定的随机性
  • 如果采用注册码的保护方式,最好时一机一码
  • 如果试用版和正式版是分开两个版本,不要仅仅使相关菜单变灰,而是彻底删除代码
  • 如果软件中包含驱动程序,则最好将保护判断加在驱动程序中
  • 如果采用keyfile的保护方式,则keyfile尺寸不能太小
  • 自己设计的检查注册信息的算法不能过于简单,最好采用比较成熟的密码学算法。