目前试了几种方式,发现在线方式即可满足小编的要求(代码混淆,强度一般即可),操作相对简单,记录如下:
编写测试代码main.py
def add(a, b):ret = a+breturn retprint('hello...')sum = add(33,66)print(sum)sum = add(1, 99)print(sum) 混淆打开在线网站: https://pyob.oxyry.com/,按照下面步骤操作:
该网站有混淆选项,但是功能大差不差,可以忽略
转pyc命令格式 python -m compileall 文件或路径 可选项 小编使用python3.8.6,运行命令D:\Python\Python386\python.exe -m compileall .,生成两个混淆文件: > python执行上面四个文件,均正常运行:
使用python -m compileall -h可以看到帮助文档和可选项的含义:
-l:不递归编译子文件夹;-r level:指定编译文件夹的层数,优先级高于-l;level=0表示不进入下一层,levle=1表示进入第一层,level=2表示进入第二层,以此类推。-f:强制重新编译一次,即使文件的时间戳没有更新,当没有使用-f选项时,如果py文件的时间戳更早于pyc文件,不会触发编译过程;-x REG:根据REG表示的正则式选择文件编译。-o OPT_LEVELS: 指定优化级别( Default is -1 which uses the optimization level of the Python interpreter itself (see -O).)ps: 命令行模式下,如果不指明文件或路径默认会将sys.path下的所有文件进行编译!sys.path包括了当前工作目录、Python安装目录、Python包目录等。
ps2: compileall 提供了api接口,可以用于python代码编写,实现复杂的逻辑。
缺点 只能单文件混淆,多文件不方便。混淆强度一般,只是改了函数名和变量名。非函数内的变量不会改名字 中文路径问题:python: Can't reopen .pyc file一直以为是编码问题,试了之后依然有问题,改成英文路径就好了!!!特此声明: 调用.py文件路径给的存在中文没问题,但是.pyc文件路径有中文就会报错。
2️⃣ 反编译 python文件格式对比python文件使用过程中涉及大量的文件格式,简单梳理如下:
.py python的源代码文件.pyc Python源代码import后,编译生成的字节码.pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言.pyd Python的动态链接库(Windows平台).so文件 uncompyle6uncompyle6使用很简单,可以参考文章《python py文件与pyc文件相互转换 https://blog.csdn.net/juzicode00/article/details/124580320》。
安装: pip install uncompyle6
使用: uncompyle6.exe 待反编译文件名
3️⃣ 其它方案 cpython强度很高,不过操作相对麻烦点。 可以参考这篇不错的文章《Python 防止反编译: https://blog.csdn.net/weixin_44422493/article/details/122124046 》
python-obfuscator开源项目,github地址: https://github.com/davidteather/python-obfuscator 21年2月最后更新,应该不错吧。
PyInstaller不多说了,直接上个链接吧
《将pyinstaller打包后的exe还原成py / 防止还原: https://www.jianshu.com/p/036cbcd20776》Pyinstaller打包的exe之一键反编译py脚本与防反编译https://blog.csdn.net/as604049322/article/details/119834495 【不推荐】pyminifier该库太老了,对新版本的python会报各种错,无法安装使用。
github地址: https://github.com/liftoff/pyminifier 最开始搜索资料,找到的就是这个库,参考文章《使用pyminifier对代码进行混淆加密实例 https://blog.csdn.net/weixin_43178103/article/details/110177599》。 效果跟如下:
🛬 文章小结python的编译和反编译涉及到很多的工具,需要针对不同的方案,使用不同的工具。
📖 参考资料 pyob https://pyob.oxyry.com/python py文件与pyc文件相互转换 https://blog.csdn.net/juzicode00/article/details/124580320Python 防止反编译: https://blog.csdn.net/weixin_44422493/article/details/122124046Pyinstaller打包的exe之一键反编译py脚本与防反编译https://blog.csdn.net/as604049322/article/details/119834495将pyinstaller打包后的exe还原成py / 防止还原: https://www.jianshu.com/p/036cbcd20776【Python】python代码的5种常见加密方式 https://developer.aliyun.com/article/1060547使用pyminifier对代码进行混淆加密实例 https://blog.csdn.net/weixin_43178103/article/details/110177599