类似py2exe软件真的能保护python源码吗
背景
最近写了个工具用于对项目中C/C++文件的字符串常量进行自动化加密处理,用python写的,工具效果不错,所以打算在公司内部推广。为了防止代码泄露就考虑不采用直接给源码方式,而python二进制脚本pyc和pyo,虽然提供的不是源码,但可以通过uncompyle2直接得到源码。通过网上资料发现有Windows下的py2exe、Mac下的py2app和跨平台的PyInstaller工具都可以将python脚本打包成可执行文件,第一反应应该满足需要,但有些不放心,故亲自尝试和分析了这些工具。
pyexe
该工具用于Windows下将python脚本和python解释器打包成可执行文件。这样可以在没有安装python的机器上运行。打包后会有个library.zip打包的文件,如图1
里面包含有所依赖的模块和打包的模块,都是pyc存储,因此可以很容易的通过uncompyle2得到源码。因此基本上是零保护。
跨平台工具PyInstaller
使用了这几个工具后发现该工具功能更为强大。打包后的可执行文件不依赖python,可以直接在没装python的机器上运行。要生成不同系统的可执行文件就必须在对应系统上进行打包,而不能一次打包跨平台运行。
该工具可以打包成一个目录或者成一个可执行文件,网上教程很多我也就不介绍了。但打包成一个文件实质执行的时候首先会解压成一个目录,然后才能运行,因此一个文件实质上是对一个目录的压缩存储。该工具提供