当前位置:网站首页 > 技术博客 > 正文

exe反编译为python语言




在这里插入图片描述

其它相关推荐:
《python Magic Number对照表》
《Windows下搭建Cmake编译环境进行C/C++文件的编译》
Sublime Text工具:https://download.csdn.net/download/_/?spm=1001.2014.3001.5503
pycdc工具:https://download.csdn.net/download/_/

经常使用pyinstaller将一些写的python程序打包成了各种exe,时间一长,源码丢失,为了恢复一部分源码,只得将先前编译好的exe反编译成py文件。

Pyinstaller在打包过程中会将py文件编译为pyc文件,然后去掉pyc文件开头的16个字节。然后将python解释器、依赖文件和修改后的pyc文件一起,用一种特殊的自解压格式打包起来,形成可执行文件。这16个字节是 Python 字节码文件的一个Magic Number和版本信息,它们用于标识这是一个 Python 字节码文件以及它是由哪个版本的 Python 编译的。

本文以test.exe为例,将其反编译为test.py

反编译过程大致分为以下三步:
1.使用pyinstxtractor.py将exe文件转换成pyc文件
2.给pyc文件添加文件头
3.使用pycdc工具反编译pyc文件,获得源码

 

出现如下Successfully字眼则表示成功

在这里插入图片描述

在该路径下已经生成了一个“test.exe_extracted"的文件夹

在这里插入图片描述

在“test.exe_extracted"的文件夹找到test文件(没有后缀名),一般你的程序是xxx.exe,就找xxx文件

在这里插入图片描述

将test文件名改为test.pyc

在这里插入图片描述

将test.pyc用Sublime Text工具打开,此时是以16进制的方式打开的

在这里插入图片描述

打开“test.exe_extracted"文件夹下的PYZ-00.pyz_extracted文件夹,还是用Sublime Text随便打开其中一个pyc文件

在这里插入图片描述

在这里插入图片描述

将xxx.pyc文件的第一行16个字节复制下来,添加到test.pyc文件的第一行,保存,如下图:

在这里插入图片描述

也可以参照python Magic Number对照表自行补充

获取pycdc工具有两种途径:

(1)可以去Github手动下载pycdc安装包(但程序需要编译):https://github.com/zrax/pycdc
  程序的编译需要用到CMake,还比较麻烦。。。
  如果想试试的话可以参考文章:《Windows下搭建Cmake编译环境进行C/C++文件的编译》

(2)除此之外可以下载编译好的可执行文件:https://download.csdn.net/download/_/

将修改后的test.pyc文件和pycdc.exe放在同目录下

在这里插入图片描述

执行命令 pycdc.exe test.pyc>test.py,同目录下生成转换后的test.py文件,该文件就是转换出来的源码

在这里插入图片描述


附录

参考文章:《Windows下搭建Cmake编译环境进行C/C++文件的编译》
     《python Magic Number对照表》
Sublime Text工具:https://download.csdn.net/download/_/?spm=1001.2014.3001.5503
pycdc工具:https://download.csdn.net/download/_/

pyinstxtractor.py内容如下:

 

在这里插入图片描述

版权声明


相关文章:

  • oracle 游标用法2025-01-20 07:30:03
  • 输出格式化字符的基本形式2025-01-20 07:30:03
  • linux移植步骤2025-01-20 07:30:03
  • 数学建模预测模型有哪些2025-01-20 07:30:03
  • 网页爬虫教程2025-01-20 07:30:03
  • 思科模拟器配置vlan2025-01-20 07:30:03
  • 江苏省计算机二级c语言编程题2025-01-20 07:30:03
  • monkey测试作用2025-01-20 07:30:03
  • java数据库员工管理系统2025-01-20 07:30:03
  • mininet安装2025-01-20 07:30:03