反编译pyinstaller打包的exe文件


为了方便使用,我们一般会用 Pyinstaller 将 Python 程序打包,这样就可以在没有安装 Python 解释器的机器上运行了。对于普通人来讲,这无疑是极其方便的,但是对于想要膜拜一下源代码的程序员来说,这就很不友好了。本文就来介绍一下,如何将 exe 文件反编译为 Python 源代码!

仅适用于 Pyinstaller 打包的 exe 文件

一、将 exe 文件转换为 pyc 文件

转换为 pyc 文件有两种办法:

  • 通过 pyinstxtractor 工具直接还原
  • 通过 pyi-archive_viewer 工具还原
1. pyinstxtractor

使用方法很简单,直接执行命令 python pyinstxtractor.py [filename] 即可还原,如下图所示:
在这里插入图片描述
解压成功后,同路径下会出现一个 [filename]_extracted 的文件夹,这里边就包含了主程序 input ,需要反编译的就是这个文件,其它的都是一些依赖库,我们不需要关心。
在这里插入图片描述
此时 ,将 input 这个文件单独复制出来并修改后缀名为 .pyc 即可 !

2. pyi-archive_viewer

通过查看 PyInstaller 的文档,发现它提供 pyi-archive_viewer 这样一款工具,它可以提取可执行文件中Python 代码。

根据官网的介绍,它的作用就是查看可执行文件中Python代码,详细介绍可参考官方文档:
https://pyinstaller.readthedocs.io/en/stable/advanced-topics.html#using-pyi-archive-viewer

注:需要安装 PyInstaller 才能使用 pyi-archive_viewer 工具。

执行 pyi-archive_viewer [filename] 即可查看 exe 中的 Python 代码
在这里插入图片描述
然后选择需要提取的文件(如:input ),提取命令如下图所示:
在这里插入图片描述

二、修复提取出的 pyc 文件

进行下一步之前,我们先来对比一下上一步导出的 .pyc 文件和正常的 .pyc文件
在这里插入图片描述
可以明显的看出,正常的 pyc 文件是比我们导出的 pyc 文件多出一行内容的,这也是使用以上两种办法导出 pyc 文件的一点不足,默认会去掉 magic 和 时间戳,因此我们需要手动修复一下文件,将正常的 pyc 文件中的 magic 和 时间戳 复制过来即可 !

magic 会因为 Python 版本的不同而不同,以你显示的为准!

三、将 pyc 文件转换为 Python 代码
1. 使用 uncompyle6 工具解码

使用 pip install uncompyle6 安装,然后输入 uncompyle6 input.pyc > input.py 即可解码 !
在这里插入图片描述

2. 在线解码
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用pyinstaller进行打包时,可以通过以下步骤生成.spec文件: 1. 首先,使用命令`pyinstaller -F -w xxx.py`来生成一个可执行的exe文件。 2. 然后,修改上一步生成的xxx.spec文件,添加资源文件。在.spec文件中,可以指定需要包含的资源文件,例如图标文件等。 3. 最后,使用命令`pyinstaller xxx.spec`来将.spec文件打包exe文件。 需要注意的是,上述步骤中的xxx.py是指要打包Python源码文件,而xxx.spec是由pyinstaller生成的配置文件。在生成的.spec文件中,可以根据需要进行修改和配置,以满足特定的打包需求。 你可以参考pyinstaller的官方文档和官方网站,了解更多关于pyinstaller的详细信息和常用命令。\[1\]\[2\] 在打包时,可以根据需要选择不同的打包方式。常用的几种打包方式包括: - `pyinstaller -F -i ./test.ico --key 035634 test.py`:配置图标和防反编译打包。 - `pyinstaller -F -i ./test.ico test.py`:配置图标。 - `pyinstaller -F test.py`:默认打包方式,将源码文件打包成一个exe文件。 这些命令可以根据实际需求进行选择和使用。\[3\] #### 引用[.reference_title] - *1* [Pyinstaller打包用spec添加资源文件,亲测可用](https://blog.csdn.net/THMAIL/article/details/106168362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [pyinstaller 多(单)文件打包流程【打包、防止反编译 快速上手教程】 ,附使用.spec打包时,增加--key命令...](https://blog.csdn.net/qq_41999731/article/details/124245642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值