当前位置:   article > 正文

python源码打包exe、exe反编译_python exe打包文件反编译

python exe打包文件反编译

一、python3打包为exe文件

这里有个hello.py文件

step1:安装pyinstaller包

pip install pyinstaller

step2:在cmd中进入hello.py文件所在路径。可以直接在hello.py文件路径下直接进入cmd

step3:打包生成exe文件,使用如下命令,将其打包为单一exe(去掉-F则不是单一exe,-w是不生成window窗口)

pyinstaller -F -w hello.py

生成了build,dist 和Hello.spec三个文件

exe文件在dist文件夹中,双击即可运行

二、python3将exe文件进行反编译为源码 

exe反编译工具:pyinstxtractor.py下载:https://sourceforge.net/projects/pyinstallerextractor/ 

将pyinstxtractor.py放到exe文件相同目录

接下来,在该路径的cmd中执行下面命令 

python pyinstxtractor.py hello.exe

成功解压(反编译),多了个Hello.exe_extracted文件夹

进入Hello.exe_extracted文件夹,有个hello文件,此为被解压出的pyc文件,需通过

接下来尝试对hello文件反编译
首先安装反编译uncompyle6

pip install uncompyle6

需将hello文件添加.pyc后缀,不然不能编译。运行下面代码反编译hello.pyc文件。在该路径的cmd中运行

uncompyle6 hello.pyc > hello.py

如果报错

Unknown magic number 227 in hello.pyc

报错原因:提示是Unknown magic number 227,这个失败因为pyinstaller工具打包的时候,会将代码文件的magic number(python的版本及编译时间)给清除掉,所以反编译时候需要将magic number添加回去才能识别,magic number我们可以通过解压主目录下的struct文件中提取出来(一般是前16个字节,可以对比打包前的源文件),将struct文件体中的前16个字节提取出来,然后在添加到文件中,然后再执行uncompyle6反编译。

报错解决方法: 

我们先看看struct文件的内容,注意看第一行,这个就是缺的信息。第二行是以E3开始的。

接下来看hello文件的内容(不是pyc文件,所以得把pyc后缀去掉,然后,用vs打开,pycharm和记事本打开会乱码),可以看出是以E3为起始,相对struct文件少一第一行。 

接下来要做的就是把缺失的magic number添加到pyc文件中 。完成后,就可以用uncompyle6反编译了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/601326
推荐阅读
相关标签
  

闽ICP备14008679号