python pyinstaller打包的exe 反编译问题记录 破解加密

首先是用pyinstxtractor

这个网上很多教程,不详说了。

生成一个xxx.exe_extracted目录

生成过程中,如果pyinstaller用key加密了,会

[!] Error: Failed to decompress PYZ-00.pyz_extracted\Cython\__init__.pyc, probably encrypted. Extracting as is.

 

这个说是fail了,其实可以解决,后面详说。

 

这个目录里,一堆xxx.pyc文件和一个PYZ-00.pyz_extracted目录

 

反编译.pyc和.pyc.encrypted


Unsupported Python version, 3.9.0, for decompilation

这堆xxx.pyc文件是没有加密的,直接用uncompyle6(也叫decompile3)(仅支持到python3.8,而我这个是3.9)或者pycdc(部分支持3.9及以上)

 

而PYZ-00.pyz_extracted里的.pyc.encrypted是加密了的,需要解密。(这里看情况,一些的程序不需要研究PYZ-00.pyz_extracted里加密了的库文件)

 

 

pycdc(也叫Decompyle++)

(有个在线支持3.9的网站,https://tool.lu/pyc,我怀疑也是用的pycdc。要会员才能多次用,我就没继续用。)

据说Windows上编译比较麻烦,我直接用的编译好的。

https://github.com/serfend/pydumpck

pip安装之后

site-packages\pydumpck\pyc_checker\lib_pycdc\pycdc.exe

 

我是把pycdc.exe复制出来单独运行的,因为我嫌pydumpck生成了几个单独的目录看着麻烦。

[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8

.\pycdc.exe .\a.pyc > .\a.py

 

这里注意,部分.pyc文件会处理发编译部分代码缺失的情况,会出现报错,因为pycdc并没有完善地支持python3.9+(Unsupported opcode )

 

 

 

struct magic number

https://github.com/MrWQ/reverse_pyinstaller

https://bbs.kanxue.com/thread-277811.htm

多个博客中说需要给.pyc文件前边加几个字节的魔数。不过我没加也用pycdc成功反编译了。不知道为什么

 

(这两个文件是否带.pyc后缀和你使用的pyinstxtractor.py工具版本有关系。V2.0以前的版本,会生成两个不带.pyc后缀的文件,手动为它添加.pyc后缀即可。如下图所示:)

 

 

加密的key隐藏在哪:pyimod00_crypto_key.pyc

解密逻辑参考:

https://tylinux.com/post/2023-09-05-decrypt-pyinstaller-generated-executable-file/

https://blog.csdn.net/GalaxySpaceX/article/details/130591614

 

 

 

 

 

 

 

 

 

posted @ 2024-06-21 18:11  hrdom  阅读(119)  评论(0编辑  收藏  举报