如何对Python编译PyInstaller打包生成的exe文件进行反编译生成pyc、py源代码文件
作者:KyrieLiu52 发布时间:2023-11-06 00:10:33
准备工作
没有加壳的python编译并打包的exe文件
python反打包代码(不知道这样叫是否合理):python-exe-unpacker
16进制编辑查看器 :Hex Editor Neo
反编译库 :uncompyle6
根据exe生成pyc文件
下载并解压缩 python-exe-unpacker 代码,myfile.exe为需要反编译的exe文件
使用python运行 python-exe-unpacker-master
文件夹中的 pyinstxtractor.py
文件,参数为需要反打包的exe文件:
python python-exe-unpacker-master/pyinstxtractor.py myfile.exe
会生成文件夹 myfile.exe_extracted
在该文件中按照文件类型排序,在文件中找到这两个文件 dssqC3
和 struct
struct 应该是不会变的,在你生成的文件夹中也是这个名字,但是dssqC3在你生成的文件可能不叫这个名字,但是一般是 文件
类型中的第一个,他的名字大多数情况下也不会带下划线。
使用 Hex Editor Neo 软件打开这两个文件:
dssqC3文件如下:
struct文件如下:
然后要做的就是把struct文件中的第一行(网上说是版本号信息),插入到dssqC3的第一行之前。
在Hex Editor Neo软件中,需要选择插入模式进行插入,否则会替换原理的内容
然后选中 struct 中的第一行复制粘贴到dssqC3保存即可。
在弹出的确认框中选择Yes
然后将 dssqC3 文件重命名为 dssqC3.pyc
就得到了py文件编译后生成的pyc类型文件
根据pyc文件反编译为py文件
安装 uncompyle6 包:
pip install uncompyle6
然后输出反编译命令,参数就是刚刚生成的pyc文件
uncompyle6 myfile.exe_extracted/dssqC3.pyc
然后就可以得到反编译后的python代码,可以新建一个myfile.py文件,选择这些代码复制到py文件中,由于pycharm或cmd输出的换行,可能会导致复制到py文件中的代码出现没有换行符的错误换行,需要手动调整一下。
也可以使用以下命令,直接将反编译的结果输出重定向到py文件中
uncompyle6 myfile.exe_extracted/dssqC3.pyc > myfile.py
这种方式也有缺陷,中文内容会出现乱码,目前还不知道怎么在输出重定向的时候限制一下编码,知道的朋友可以在下面评论一下
参考
https://blog.csdn.net/weixin_44362969/article/details/105616531
来源:https://blog.csdn.net/qq_41340996/article/details/124782911
猜你喜欢
- #!/usr/bin/python## get subprocess module import subprocess ## ca
- PHP异步调用实现方式 浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求
- 微软上周发布了一份关于 Windows Internet Explorer 8 浏览器(以下简称为 IE 8)性能优化的白皮书《Window
- 简介 函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平台上的
- 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。URL和路由5.0的URL访问不再支持普通URL模式,
- 你不得不承认,今天网络发展之迅速,信息流动速度之快、量之大,是我们不曾考虑过的,但现在它就真真切切地摆在我们面前。如何接纳信息,怎么处理、消
- 在主图中背景颜色不知道怎么改,plt.plot()中没有axisbg参数。但是子图可以对plt.subplot的参数做修改,下面是对子图的背
- 在JavaScript开发中,被人问到:null与undefined到底有啥区别?一时间不好回答,特别是undefined,因为这涉及到un
- 前面也讲过一次phar文件上传的东西,但是那都是过滤比较低,仅仅过滤了后缀。知道今天看到了一篇好的文章如果过滤了phar这个伪造协议的话,那
- 内容摘要: 当用户填写页面<FORM>内容时所提供的全部值,或在浏览器地址栏输入在URL后的值,通过Form和QueryStrin
- 本人非计算机,亦非心理学,或者交互设计,更非设计专业出身,因此什么都是半桶水。即使如此,依然靠着兴趣寻找乐趣。对于设计,爱之,但没有受过系统
- 对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串''相同的事。情况并非如此。例如,下述语句是
- 前言很多人会使用postman工具,或者熟悉python,但不一定会使用python来编写测试用例脚本,postman里面可以完整的将pyt
- 这个功能现在很多网站,论坛都有,本站也有呵呵!如果您还不知道如何实现这个功能,没关系看看本文吧!我将给你介绍怎么给你的网站加上运行代码框的功
- 代码: <?php $page=$_GET['page']; include($page.'php')
- 今天呱呱发了一个网址给我看,大概效果就是类似幻灯片的效果。当时我的第一反映这个是不是用锚点做的啊呢,以前在网上看过用锚点做的这类的效果。脑袋
- lambda函数是一种小的匿名函数。lambda语法lambda函数:lambda [arg1 [,arg2,...[,argn]]] :
- 1. 首先到 nodejs.org 下载 Node.js 安装包并安装。2. 打开 Sublime Text 2 编辑器。选择菜单 Tool
- 问:如何给导入文件加上时间戳标记?答:请参考下文中介绍的两种方法:1.在DOS下从系统获得时间戳利用Dos命令取得时间戳:C:\>ec
- 程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接 ,可以先设置变量然后通过INIT() 来选择