python源码提取_从PyInstaller打包生成的EXE文件中提取Python源码
本文将详细讲解怎么使用 pyi-archive_viewer 和 uncompyle6 工具提取pyinstaller打包生成的EXE中的pyc文件,并将其正确的解码成py源码。
开始前准备
安装好 PyInstaller 环境,并已经将Python代码打包生成一个EXE文件。
PyInstaller 安装好后,Python 安装目录的 Scripts 文件夹下有这么一个工具:pyi-archive_viewer.exe
这个工具的作用是提取EXE文件中的PYC文件(也就是字节码),注意,这个工具只对 PyInstaller 生成的EXE可执行文件有用;
运行:
pyi-archive_viewer c:\main.exe
c:\main.exe 是我已经打包好的文件;
你将会看到屏幕打印很多文件名,其中 main 就是我们需要的;注意,这里的main是我编译的python文件main.py,对于你们可能有所不同;
按照程序执行顺序,输入 x ,会提示 extract name ?输入 main (main根据你编译的文件有所不同,注意看上一条信息),接着它又会问你 to filename?问你保存的文件名,我输入了 main.pyc
这时候,在 pyi-archive-viewer.exe 的当前目录下,生成了一个 main.pyc 的文件,这就是 Python的字节码文件。这个时候,我们还不能对这个字节码文件进行解码操作,原因是它并不是一个完整的文件,它缺少一个叫 IMAGE 头信息的东西,我们需要手动添加;
现在你需要一个十六进制的编辑工具。
用十六进制编辑工具打开文件后,你会在文件开头看到 E3 00 00 00,记住它,等下我们需要在它前面添加 IMAGE 头。
这里来说一下PYC文件为什么会缺少 IMAGE头;那是因为 PyInstaller 在编译时将它删了,但 PyInstaller 在编译内置库时,不会将他们的 IMAGE 头删除,很令人费解哈。所以我们可以提取内置库PYC文件中的IMAGE头。
在使用 PyInstaller 打包时,会在当前目录生成一个叫 build 的文件夹,进入build,找到一个叫 base_library.zip 的文件夹,随便解压一个 PYC文件出来,使用十六进制编辑器打开。
我选用了 enum.pyc 这个文件。注意:每个人的文件内容都可能不同,这取决于 Python的版本,也可能和操作系统版本有关。
还记得前面提到的 E3 00 00 00么?在它之前的,就是我们需要的IMAGE头信息,每个人的长度都可能不同,在我这里,它占用了16位。
将这些信息写入 main.pyc 文件E3 00 00 00的前面,如果你不懂怎么插入,我还真帮不了你,自己问度娘吧!
写入 IMAGE 头后,PYC 文件才算完整,进入下一步!
解码
我们现在需要将PYC文件解码成python源代码;需要用到一个叫 uncompyle6 的工具;
使用pip3进行安装:pip3 install uncompyle6
使用命令:
uncompyle6 -o c:\main.py main.pyc
-o 选项指定输出的源码路径。
至此整个提取与解码过程结束。
python源码提取_从PyInstaller打包生成的EXE文件中提取Python源码相关推荐
- pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行
pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 目录 pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 #pyinstalle ...
- Python执行pyinstaller打包生成的exe文件实战
Python执行pyinstaller打包生成的exe文件实战 目录 Python执行pyinstaller打包生成的exe文件实战 #pyinstaller打包生成的exe文件
- pyinstaller打包生成的exe文件(并设置运行时静默)
pyinstaller打包生成的exe文件(并设置运行时静默) 目录 pyinstaller打包生成的exe文件(并设置运行时静默)
- python总是提示缺少模块_python打包生成的exe文件运行时提示缺少模块的解决方法...
事情是这样的我用打包命令:pyinstaller -F E:\python\clpicdownload\mypython.py打包了一个exe程序,但是运行时提示我缺 少bs4模块然后我就去查pyin ...
- python打包exe后缺少模块_python打包生成的exe文件运行时提示缺少模块的解决方法...
python打包生成的exe文件运行时提示缺少模块的解决方法 事情是这样的我用打包命令:pyinstaller -F E:\python\clpicdownload\mypython.py打包了一个e ...
- Pyinstaller打包后的exe文件打开闪退解决方案
Pyinstaller打包后的exe文件打开闪退解决方案 问题:利用pyinstaller对python代码打包后,dist文件夹中会生成一个xxx.exe可执行文件.但是很多朋友双击这个exe文件会 ...
- 解决pyinstaller打包后的exe文件打开闪退的问题
解决pyinstaller打包后的exe文件打开闪退的问题 闪退问题:一般我们打包完后的exe文件点击运行就会直接闪退,很难看到具体错误 解决步骤: 首先打开 cmd 进入到 exe 文件所在目录(c ...
- python编写游戏怎么打包——详解python+pygame游戏开发之使用Py2exe打包游戏为exe文件
python编写游戏怎么打包 1.简介 2.软件准备 3.打包流程 最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. ...
- java pdfbox 提取pdf 标题_java – 使用pdfbox从PDF文件中提取文本
我试图使用pdfbox从PDF文件中提取文本,但不是作为命令行工具,而是在我的 Java应用程序中.我正在使用jsoup下载pdf. res = Jsoup .connect(host+action) ...
- 如何从Windows EXE文件中提取图标
Sometimes you're working on a project and need access to a high-quality version of a Windows 10 appl ...
最新文章
- 重启服务才可连接BOOT服务器
- Fast RCNN 训练自己的数据集(3训练和检测)
- 「starter推荐」简单高效 Excel 导出工具
- idea new对象后自动补全_IDEA的quot;奇淫巧技quot;
- HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)
- spring cloud consul整合
- java 唯一id生成算法_唯一ID生成算法剖析
- 第16届电源技术专题研讨会
- 滴滴披露语音识别新进展:基于Attention显著提升中文识别率
- Android入门笔记02
- python大家都是怎么学的_你们都是怎么学 Python 的?
- Xcode更改Build输出路径
- GPS测量中所涉及的时间系统
- 时间管理-番茄工作法
- 2022年全球市场激光直接成像系统(LDI)总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 阅读jeecms源码总结
- A Question of Ingestion(Dp)
- 恋爱话术表白头像漫画制作微信小程序
- Hibernate 关联关系解除
- 八卦一下量子机器学习的历史
热门文章
- 百度编辑器Ueditor 多图上传出现部分照片尺寸不压缩的问题解决
- 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
- sig值怎么计算_spss结果中 F值 t值及其显著性 sig 的解释
- teamtalk mysql.h_TeamTalk安装测试
- Rocket Kitten 报告
- Auto.js微信抢红包脚本
- html整体居中文字,html文字居中 html图片居中代码
- CrossApp V1.0.2 正式推出,优化众多内容/更加稳定
- android在adb下刷机教程,adb sideload刷机教程
- 使用vue模拟通讯录列表,对中文名拼音首字母提取并排序