以前听说py编译的程序不安全,容易被反。这两天刮台风了,闲着也是闲着,自己也跟着捣鼓了一番。
为了不给别人带来不好的影响,我编译我自己写的代码来做测试,代码头部如下图,引用了几个常见库:
用pyinstaller进行完整打包:
pyinstaller -F g.py
打包结束,在dist目录得到目标程序g.exe:
接下来用两种方式进行反编译:
一、pyinstxtractor+uncompyle6方式
-
将pyinstxtractor.py和目标exe放在同一个目录
-
在目录进入命令行窗口,输入命令:
python pyinstxtractor.py g.exe
会在当前目录生成一个目标_extracted 的文件夹,里面有一大堆文件,其中有一个与目标exe同名的pyc文件,我这边就是g.pyc。
-
安装uncompyle6库,按以下命令安装:
pip install uncompyle6
-
将pyc文件反编译为py文件:在第2步的目标_extracted 文件夹进入命令行窗口,输入以下命令,后面的.py文件名随意:
uncompyle6 g.pyc>g.py
-
回车后在当前目录生成对应的py文件:
-
打开瞧一瞧,和源文件对比一下,头部多了一些uncompyle6的信息,其余的和源文件一毛一样。
二、pycdc方式
前面还是同上面的方式,得到pyc文件(步骤2);
-
将pycdc.exe和pyc文件放同一目录,进入命令行窗口,输入以下命令:
pycdc.exe g.pyc > g.txt
反编译结果被输出到g.txt中,当然后缀也可以改成.py啥的。
对比结果,这种方式好像代码都变成纯文本了,除了一些换行会错乱,其他的还原度还是极好的。
以上只是最基本的两种反编译Python打包的exe方式,也都顺利拿到我们想要的py源码。实际反编译的时候,可能会遇到很多情况,比如加密、magic头变化、依赖库、py版本等问题,只能相应的再去找解决办法,见招拆招了。
当然,网上还有很多方法,比如pyi-archive_viewer提取pyc文件,但大体思路都是exe > pyc > py。
以上的测试文件可公众号回复:py反
注:测试环境:Win7 64位,Python 3.8.7,简单测试,未做深入研究。
- End -
更多精彩文章文章来源:https://www.toymoban.com/news/detail-770817.html
点击下方名片关注【偶尔敲代码】文章来源地址https://www.toymoban.com/news/detail-770817.html
到了这里,关于【测试】Python反编译的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!