反编译pyinstaller生成的exe程序
Roy Lv7

帮别人做了一个项目,需要exe执行,使用pyinstaller进行了打包操作,发给用户后,然后源文件没有放网盘,客户还需要修改一个东西。现在手头只有一个exe,总不能把时间浪费在路上毕竟这不是人干的事。

1. 将exe反编译为pyc

使用pyinstxtractor 将exe进行反编译,提取由pyinstaller 生成的可执行文件内容。

pyinstaller Extractor项目地址extractor

Useage:

python pyinstxtractor.py Main.exe

运行后可以得到一个提取的文件夹

提取目录))

使用Uncompyle6反编译 *.pyc 文件

使用了在线版本pyc转py,尝试了几个网站都不能正常的反编译。看到uncompyle2的后续版本uncompyle6

项目地址:uncompyle6

如果直接使用uncompyle6 进行反编译可能会遇到以下两种报错情况,别问我怎么知道的。

1.ImportError: Unknown magic number 227 in bit.pyc

2.bad marshal data (unknown type code)

在使用uncompyle6之前我们需要二进制编辑软件,我用的是Ultraedit

UltraEdit 27.0.0.94 官方简体中文版安装包 [2020/07/31]

x86 https://downloads.ultraedit.com/main/ue/win/ue_chinese.exe
x64 https://downloads.ultraedit.com/main/ue/win/ue_chinese_64.exe

解决ultraedit 试用期的问题,只需要在hosts文件中添加以下两行:

1
2
127.0.0.1 licensing.ultraedit.com
127.0.0.1 swupdate.ultraedit.com

使用UltraEdit打开提取目录中的struct.pyc文件,复制0-F 二进制数据粘贴到源码pyc中。

struct.pyc

接下来使用:

uncompyle6 bit.pyc > bit.py

即可得到我们反编译后的源码文件了。

  • 本文标题:反编译pyinstaller生成的exe程序
  • 本文作者:Roy
  • 创建时间:2020-08-31 15:31:05
  • 本文链接:https://www.yrzdm.com/2020/08/31/pyexe2py/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!