如何更好地保护你的程序
验证/授权/试用
全局变量
- 如果你用一个全局变量来控制你的软件是否已验证(boolean is_registered),你可以考虑不将它设置为 boolean 类型而是选用其他的类型。当授权成功,这个变量应当是一个随机的数字,并且该数字尽量避免使用 0 或 1。如果每次启动都是一个随机的数值那再好不过了。
- 如果可以,最好将验证代码与初始化代码掺杂在一起,不要单独出现调用验证方法并赋值的操作。
验证方法
- 可以设置多个
checkLicense()
方法,这样可以拖延/恶心破解者,使你的软件更安全。
序列号注册方案
用序列号影响程序控制流
- 如果序列号被伪造或其他因素,可以执行一个错误的代码,比如把 1 + 1 = 2 中的其中一个 1 改成 2 即 1 + 2 = 3 这样过程错误结果就错误了。
延迟崩溃
- 检测到破解之后,存放一个 kill switch,等执行到其他方法时,崩溃或者抛出异常错误之类的。