python exe文件解包方法

这篇具有很好参考价值的文章主要介绍了python exe文件解包方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术背景

目前针对Python中主流的加密方案有以下几种:

序号 工具 方法描述 优缺点
1 Nuitka .py 文件先被转成了 .c 文件,然后被编译成 .o 文件,最后合并成 .bin 可执行文件,从 bin 到 C 是不可逆的,从 C 到 Python 也是不可逆的,因此代码是安全的 工作量小,安全性高,使用加密之后的Python便捷;编译时间长,过程复杂
2 发行.pyc文件 通过compileall模块将.py文件转为.pyc文件,该文件是二进制,无法直接看源代码,而python解释器可以直接执行.pyc文件 台兼容性好,.py 能在哪里运行,.pyc 就能在哪里运行;解释器兼容性差,.pyc 只能在特定版本的解释器上运行。有现成的反编译工具,破解成本低
3 代码混淆(oxyry,pyobfuscate) 让人看不懂代码,移除注释和文档,改变缩进,在tokens中间加入一定空格,重命名函数、类、变量,在空白行插入无效代码 提高了一点源码破解门槛。兼容性好,只要源码逻辑能做到兼容,混淆代码亦能;只能对单个文件混淆,无法做到多个互相有联系的源码文件的联动混淆
4 py2exe 将源码编译为 .pyc 文件,加之必要的依赖文件,一起打包成一个可执行文件。最终 py2exe 打包出的是二进制文件。 直接打包成 exe,方便分发和执行。破解门槛比 .pyc 更高一些;兼容性差,只能运行在 Windows 系统上。生成的可执行文件内的布局是明确、公开的,可以找到源码对应的 .pyc 文件,进而反编译出源码。
5 Cython 将 .py/.pyx 编译为 .c 文件,再将 .c 文件编译为 .so(Unix) 或 .pyd(Windows) 生成的二进制 .so 或 .pyd 文件难以破解。同时带来了性能提升;兼容性稍差,对于不同版本的操作系统,可能需要重新编译。虽然支持大多数 Python 代码,但如果一旦发现部分代码不支持,完善成本较高。
6 Pyinstaller 打包为exe文件, 将Python文件转换为exe文件,以及dist文件夹和build文件夹,如果要移植到其他电脑上运行,也是只需要将这两个文件夹复制到对方电脑上,即使对方没有python环境,也可以运行程序,具有较好的兼容性;pyinstxtractor.py可以进行反编译

对于上述这些加密,在工作中,常见将一些Python写的脚本、程序使用Pyinstaller打包为exe文件的居多,因为即使对方没有python环境,也可以运行程序,具有较好的兼容性。

想要了解这些脚本、程序的逻辑、对其功能进行分析,最好的方法是其进行反编译解包。

解包思路

1.对exe文件进行解包

方法1:使用pyinstxtractor.py
执行python pyinstxtractor.py <待解包文件名> ,如果成功,即可获得<待解包文件名>_extracted 文件夹。

方法2:使用archive_viewer.py
执行python archive_viewer.py <待解包文件名> ,会打印EXE文件中包含的所有文件信息
使用x <文件名>命令将想要提取出的文件提取出来,q 命令退出。

区别:

方法1 可以一次性提取出所有文件,方法2只能逐个提取文件。但是在个人使用时,同时执行时会提示python版本问题,想要正常解包必须使用正确的python版本。
方法2 的成功率相对较高。可以先尝试用方法1,失败后用方法2。

2.构建pyc文件

从步骤1中获得的文件是pyc文件,我们还需要进一步反编译获得py文件。在将Python文件打包成exe文件的过程中,会抹去pyc文件前面的部分信息,所以我们在反编译之前需要检查并添加上这部分信息。抹去的信息内容可以从struct文件中获取:

python exe文件解包方法

 可能会出现两种情况:

 情况一struct 文件中, E3 前 有内容

python exe文件解包方法

python exe文件解包方法

 这种情况将struct 文件中,E3 之前的 所有内容,复制到目标文件 E3 之前。

python exe文件解包方法

 情况二struct 文件中, E3 前 无内容

python exe文件解包方法

 遇到这种情况后,在前面步骤1中,找到PYZ-00.pyz_extracted文件夹中任意一个pyc文件,记住前面的4个字节,在目标文件第一行输入前4个字节,后续补0。

python exe文件解包方法

 将目标文件后缀名改为“.pyc”

3.对pyc文件进行反编译

安装uncompyle6后,去dos界面,输入uncompyle6 路径+文件名.pyc > 文件名.py

python exe文件解包方法

没有报错就表示成功了。

 python exe文件解包方法

python exe文件解包方法

 其他问题

 q1:提示PYZ文件加密

在解包exe过程中会提示会出现PYZ中的文件无法正常提取(archive_viewer.py),或者提取出来后显示encrypted(pyinstxtractor.py)的问题

 针对这个问题,可以使用上述方法,重新反编译PYZ文件的加密密钥pyimod00_crypto_key.pyc文件,就可以获得秘钥。

Pyinstxtractor不支持加密的pyz档案。目前,可以使用下面的代码片段来解密pyz提取目录中的加密pyc。请注意,下面的脚本是为在Python 2.7上运行而编写的,可以在PyInstaller之前的版本上运行

python exe文件解包方法

 该脚本可以从任何Python版本反编译加密的pyc。但是,您需要从下面的列表中适当地更改pyc头。具体的事项可以去访问pyinstxtractor说明文档:Frequently Asked Questions · extremecoders-re/pyinstxtractor Wiki · GitHub文章来源地址https://www.toymoban.com/news/detail-442141.html

到了这里,关于python exe文件解包方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python在win10上打包exe文件在win7上不兼容,显示api-ms-win-core-path的dll文件找不到的问题的解决方法

                    Python在win10环境下打包程序为exe文件在win7以下不兼容问题的解决办法 问题产生的背景 在实际工作中经常会遇见许多数据处理等方面的问题,这个时候不能简单的通过Excel的操作解决问题或者面临大量数据处理时手动操作相当窘迫,并且会耗费大量的时

    2024年02月11日
    浏览(50)
  • mac打开exe文件的三大方法 mac怎么运行exe文件 mac打开exe游戏 macbookpro打开exe

    exe文件是Windows系统的可执行文件,虽然Mac系统上无法直接打开exe文件,但是你可以在Mac电脑上安装双系统或者虚拟机来实现mac电脑上运行exe文件。除了这两种方法之外,你还可以在Mac电脑上使用类虚拟机软件打开exe文件,这三种方法各有优缺点。本文就来告诉大家mac怎么运行

    2024年04月15日
    浏览(45)
  • Python读取.nc文件的方法与技术详解

    目录 一、引言 二、使用netCDF4库读取.nc文件 安装netCDF4库 导入netCDF4库 打开.nc文件 获取变量 读取变量数据 案例与代码 三、使用xarray库读取.nc文件 安装xarray库 导入xarray库 打开.nc文件 访问变量数据 案例与代码 四、性能与优化 分块读取 使用Dask进行并行计算 减少不必要的变量

    2024年04月23日
    浏览(28)
  • python pyinstaller运行可执行exe文件,在服务器上出错:importError: DLL load failed while importing cv2:找不到指定的模块 解决方法

    目录 一、问题描述 二、原因分析  三、解决步骤 1.远程服务器上,打开“服务管理器”-“功能”-“添加功能” 2.勾选“桌面体验” 3.安装,自动安装“墨迹和手写服务” 4.重启后安装成功 5. 再去cmd中执行 exe文件不报错 四、其他方法 我的电脑:win10+python3.8+pycharm; 远程服务

    2024年02月14日
    浏览(57)
  • python创建exe文件

    pip install pyinstaller exe_test.py 注:添加sleep以便在执行exe文件的时候能看到结果 (1)命令行进入exe_test.py所在的目录   (2)生成exe文件 pyinstaller -F exe_test.py 在dist目录中会生成exe_test.exe文件 以上是不带版本信息参数生成exe文件 如果要带版本信息参数,则需要先编辑版本信息文

    2024年02月09日
    浏览(34)
  • Python打包为exe文件

    我们开发的python脚本一般都会用到一些第三方包,当别人需要用到我们编写的脚本时,如果我们将脚本文件发给他,他是不能直接运行去用的,他需要安装python解释器,配置相应的环境,这是相当麻烦的。那怎么办呢?我们可以将脚本和解释器打包成exe,再发给别人去使用。

    2023年04月09日
    浏览(39)
  • Python文件打包exe程序

    脚本打包exe:win/mac【终端】 qt5,开发桌面应用 打包qt5程序【桌面应用】 注意事项: 支持mac、win(Windows建议使用python3.6.8) 配合虚拟环境打包 过程详解: 1、pyinstaller包:帮我们快速打包应用程序! 2、Windows建议使用python3.6.8:对程序打包会发生更少的bug! 3、建议配合虚拟环

    2024年02月08日
    浏览(49)
  • 【Python打包成exe】快速将多个py文件及其他文件打包为exe可执行文件

    尝试了很多种Python打包为exe可执行文件的方式,通过总结,得出一种最简洁、最有效的打包方式分享给大家! 准备好将要打包的工程文件(夹) 如上图所示, 首先将主文件UI.py和文件夹./file放在一级文件夹./YW下方,如果有同级其他.py文件与UI.py放在同一级文件夹即可! 然后

    2024年01月21日
    浏览(46)
  • python中针对同一目录或不同目录下的其他文件或文件夹的import用法

    在Python中, import 用于导入其他文件或模块的内容,让你可以在当前文件中使用这些内容。下面我将介绍如何使用 import 来导入同一目录或不同目录下的文件或文件夹。 1. 导入同一目录下的文件或模块: 如果你要导入与当前文件位于同一目录下的文件或模块,可以直接

    2024年02月14日
    浏览(50)
  • 将python打包成exe文件

    以上一篇文章🔗用python删除重复文件并放入回收站为例,演示了如何用python写一个删除重复文件并放入回收站的功能代码,但是每次都要cmd执行一下 python 删除重复文件.py 也是非常惹人烦的。有没有办法让python像go语言一样,能打包成exe文件,双击执行即可呢? 要将Python脚本

    2024年01月24日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包