2.1. 最高安全性和最快性能
2.1.1. 如何生成最高安全性的脚本
下面的选项都可以用来增加安全性
--enable-rft
几乎不影响性能,是推荐选项--enable-bcc
能增加函数执行速度,但是可能需要的内存会多一些--enable-jit
可以防止静态反编译--enable-themida
可以防止动态调试器,但是对性能影响比较大,并且仅在 Windwos 可用--mix-str
保护脚本的所有字符串常量--obf-code
2
能够同时增加反编译 Bytecode 的难度pyarmor cfg mix_argnames=1
保护函数参数,但是可能导致 annotations 不可用
下面的选项可以隐藏加密模块的属性
--restrict
甚至不允许外部脚本直接导入和使用加密脚本
下面的选项可以防止加密脚本和加密脚本中函数被其他人替换成为自己的函数
2.1.2. 如何生成最快的加密脚本
使用下面的选项可以生成性能最高的加密脚本,其安全性相当于 .pyc
pyarmor cfg restrict_module=0
如果需要提高安全性,但是对性能又不要影响太大,最好的选择是同时启用 RFT 模式
如果有敏感字符串,那么使用 --mix-str
同时设置过滤条件,仅仅加密这些敏感字符串。如果没有过滤条件,所有的字符串常量都会加密,可能对性能会造成一点影响
pyarmor cfg mix.str:includes "/regular expression/"
2.1.3. 不同类型应用的推荐选项
对于服务网络请求类型的应用
对于其他大多数的应用
如果 RFT 模式 和 BCC 模式 可用,那么使用下面的选项
如果 RFT 模式 和 BCC 模式 不可用,使用下面的选项
--private
或者--restrict
限制外部脚本访问加密脚本
--mix-str
和过滤条件如果需要保护关键函数避免被其他人替换成为没有加密的函数,使用下面的选项
--assert-call
,同时检查跟踪日志,确保关键函数被保护,必要的时候使用运行 脚本补丁 对这些函数进行保护如果性能允许的话,启用选项
--enable-themida
,这个选项还是能很大程度的防止调试器的攻击,但就是对性能影响大一些
2.1.4. 重构脚本增加安全性
重构主脚本
Pyarmor 在装载完模块之后,会把模块级别的代码进行清理,清理之后即使通过注入方式也无法在获取代码。
但是对于主模块,因为它永远不会执行完,所以模块级别的代码不会被清理。通过把主模块中非必要的代码,移到其他模块,然后在导入这些代码,这样能够提高安全性。