引言
身为一种高级形式的脚本语言, 其具备便捷特性的语法以及丰富多样的库, 从而致使它成为众多从事开发工作之人的首选。然而, 有的时候, 我们期望对我们的源代码予以保护, 防止被其他人轻易地获取以及篡改。为了达成这一期望目标, 我们能够采用代码混淆此种带有技术属性的手段做法。本文将会介绍代码混淆的当前状况情形、优化方式方法以及常见作用工具。
正文1. 使用pyc或pyo文件代替源码文件
按一定方式, 源码能被弄成pyc或者pyo文件形式, 以此替换掉最初那个源码文件。虽说通过这样来操作, 源码能够在一定程度上被隐匿, 但借助在线反编译工具, 却依旧可以简便容易地把源代码给还原出来。这般一来, 这种做法仅仅能具有一定程度的源码保护功效。
2. 混淆源代码
历经对源代码予以混淆处置, 能够增添破解者解读代码的难度以及成本。混淆工具能够对函数名、变量名、类名等关键代码实施重命名与混淆处理, 进而削减代码的可解读性。然而, 多数的混淆工具都是能够被逆向推导的, 也就是说, 经过混淆后的代码依旧能够被反混淆恢复原状。所以, 混淆源代码仅仅能在一定程度上提升安全性, 却没办法做到完全保密。
3. 使用打包软件
将项目打包成单个可执行文件的打包软件譬如添加链接描述等, 能让其在没有环境的机器上方便使用 , 可是经解压缩包后用户还能轻易获取所有pyc文件或者源文件 , 这和C/C++编译生成的可执行文件有着本质区别 , 所以这种方式基本上没法提供有效保护。
4. 使用混淆工具
针对iOS应用程序而言, 能够借助一些ipa混淆工具(比如说)去对源代码予以混淆保护。这些工具能够重命名以及混淆关键代码, 使得代码的可读性下降, 进而增加破解者破解以及反编译的难度。然而, 当下可用的工具大多仅仅能够混淆单个文件, 没有办法处理整个项目。
5. 编译成C模块
若要达成更强的保密性, 可把代码编译成C模块, 借此实现不可逆的混淆效果。编译而成的C模块能够直接发布, 不过得编写额外的代码用以生成C模块, 且生成后的模块不见得可以直接运行。此种方式能够有效地保护源代码, 然而对于开发者来讲, 需付出更多的努力跟成本。
总结
当前存在的可行代码混淆方案, 有着一定程度的局限性, 没办法彻底解决源代码泄露以及安全方面的问题。采用多种混淆方案组合运用, 结合加密技术, 运用签名机制, 还有把代码编译成C模块等优化办法, 能够提升源代码的保密性与安全性。然而, 要对开发效率和代码保护成本作权衡, 挑选契合自身项目需求的方案。
参考资料
代码混淆工具,源代码保密、加密、混淆
代码混淆、加密工具
代码混淆技术总结
IPA包提交工具