一、代码库和参考链接
在对python打包的exe文件进行反编译时,会使用到uncompyle6工具,但是这个工具只支持python3.8及以下,针对更高的版本的python则不能反编译。
关于反编译参考几个文章:
Python3.9及以上Pyinstaller 反编译教程(exe转py)-CSDN博客
Python反编译pyinstaller打包的exe文件 从0开始(未加密篇)_pyinstaller反编译-CSDN博客
【干货】Python文件打包 && .exe文件反编译_反编译python打包的软件-CSDN博客
Python Uncompyle6 反编译工具使用 与 Magic Number 详解-CSDN博客
几点总结:找struct文件和主文件,主文件一般看名称,根据经验判断,跟exe文件同名,或者为main等。
如果struct中没有没有魔术号码,或者main.pyc中也没有魔术号码,则直接在 PYZ-00.pyz_extracted 文件夹中任意一个 .pyc 文件用二进制查看器打开,就能看到魔术号码,但是前提是要使用较新的pyinstxtractor.py
工具才会有魔术号码,否则不一定有。
PyInstaller Extractor地址:extremecoders-re/pyinstxtractor: PyInstaller Extractor
pycdc源码链接:zrax/pycdc: C++ python bytecode disassembler and decompiler
pycdc编译好的:
wenjian11/decompyle-builds: Precompiled Decompyle++ (pycdc) binaries for Windows & Linux
二、如果自己编译pycdc
安装cmake,g++,gcc,安装教程参考网上其他文章,
安装完成之后,执行如下命令进行检测:
gcc --version
g++ --version
mingw32-make --version
假设源代码在我本地的路劲是D:\pycdc_gcc\pycdc\
则进入到build目录,执行如下命令:
D:\pycdc_gcc\pycdc\build> cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -S D:/pycdc_gcc/pycdc -B D:/pycdc_gcc/pycdc/build
D:\pycdc_gcc\pycdc\build> mingw32-make
最后输出的结果