A
Another_eYes
Unregistered / Unconfirmed
GUEST, unregistred user!
to bluely, 我们需要先明确一个观点: 所谓crack就是破坏软件的用户校验, 使非法用户
也能完全使用软件的功能. 所以, 对合法用户使用软件不考虑在内, 至于一份合法软件
允许多少copy同时运行那是另外一个话题, 我们不把它归入防crack的范畴.
基于上述观点, 可否请您说出一个我软件运行时必须一次把所有加密部分全部解密后
才让用户使用的理由? 您注意到我上次的回答了吗? 密匙并不是放在软件代码中. 而
是执行程序前让用户输入的(或者由安装程序写入注册表或磁盘文件), 这样至少要有
一个合法的许可才能执行这个软件, 而程序的解密并不是一次全部解干净, 而是用到
的部分再临时解密, 并且几段加密代码可以解密到同一内存空间再运行(保证第二次解
密后的代码覆盖掉第一次解密后的目前不使用的代码).
只要在每次需要解密时临时到注册表或磁盘文件中读取密匙,这样即使将运行时的内
存直接读出来保存成执行文件也没用. 在没有密码时一样无法执行下去.
至于保证软件只能有一个合法用户输入正确密码并使用的话, 那就是另一个话题了.
上述方法实现起来可能比较困难, 但决非不可能做到(至少在DOS下实现起来很容易).
也能完全使用软件的功能. 所以, 对合法用户使用软件不考虑在内, 至于一份合法软件
允许多少copy同时运行那是另外一个话题, 我们不把它归入防crack的范畴.
基于上述观点, 可否请您说出一个我软件运行时必须一次把所有加密部分全部解密后
才让用户使用的理由? 您注意到我上次的回答了吗? 密匙并不是放在软件代码中. 而
是执行程序前让用户输入的(或者由安装程序写入注册表或磁盘文件), 这样至少要有
一个合法的许可才能执行这个软件, 而程序的解密并不是一次全部解干净, 而是用到
的部分再临时解密, 并且几段加密代码可以解密到同一内存空间再运行(保证第二次解
密后的代码覆盖掉第一次解密后的目前不使用的代码).
只要在每次需要解密时临时到注册表或磁盘文件中读取密匙,这样即使将运行时的内
存直接读出来保存成执行文件也没用. 在没有密码时一样无法执行下去.
至于保证软件只能有一个合法用户输入正确密码并使用的话, 那就是另一个话题了.
上述方法实现起来可能比较困难, 但决非不可能做到(至少在DOS下实现起来很容易).