【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文件
uncompyle6

uncompyle6使用很简单,可以参考文章《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

不多说了,直接上个链接吧

【不推荐】pyminifier

该库太老了,对新版本的python会报各种错,无法安装使用。
在这里插入图片描述

github地址: https://github.com/liftoff/pyminifier
最开始搜索资料,找到的就是这个库,参考文章《使用pyminifier对代码进行混淆加密实例 https://blog.csdn.net/weixin_43178103/article/details/110177599》。
效果跟如下:
在这里插入图片描述

🛬 文章小结

python的编译和反编译涉及到很多的工具,需要针对不同的方案,使用不同的工具。

📖 参考资料

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值