当前位置:   article > 正文

【逆向 python】反编译pylnstaller打包的exe文件_pyinstxtractor.py

pyinstxtractor.py

下载附件得到ea_py.exe文件,放入DIE查看,是由pylnstaller打包的

一、利用pyinstxtractor.py脚本工具将exe程序还原为pyc文件

将pyinstxtractor.py脚本与我们要反编译的.exe文件放入同一个工作目录下,进入该文件夹目录输入命令:

python pyinstxtractor.py xxx.exe

ps:如下图所示,我们会看到编译该代码的python版本,我们同样应该使用相同的python版本来运行这个脚本,但其实这里影响不大,也能正常生产pyc文件;但python版本一致很重要,我们发现自己使用的python版本和要反编译的文件使用的python版本不一致就应该及时下载对应版本

执行完毕,成功之后会生成xxx.exe_extracted文件夹,如图:

进入这个生成的文件夹后,我们应该找到与exe文件同名的文件,并将其文件名后缀更改为.pyc

接下来是重点,重中之重!在十六进制文本编辑器(如010editor)中自行补全ea_py.pyc文件的magic number

Magic Number的格式:

Python3.3 以下版本: 只有Magic Number和四位时间戳

Python3.3(包含) - Python3.7(不包含)版本: 4个字节的magic number + 8个字节的时间戳,这个时间戳可以全是0。

Python3.7(包含)版本以上: 4个字节的magic number + 4个字节的空白数据 + 4个字节的时间戳 + 4个字节的文件长度,除了magic number,其它数据可以全是0。

此时的pyc文件是被抹除掉magic number的,需要找到对应python版本的magic number应插入到第一行中

我能找到的网上的办法都很复杂,后面我发现其实只需要找到名为PYZ-00.pyz_extracted的文件夹(这个文件夹里放的是程序引入的依赖库)中任何一个.pyc文件打开

就可以得到相应python版本的四字节magic number

将magic number四个字节插入到xxx.pyc的文件中,后十二个字节可全为0(注意是插入不是覆盖,可以明显看到E3文件头在第二行第一个字节)

如果python版本magic number不能正确对应,那么后面我们就无法成功将pyc文件反编译

二、将pyc文件还原为py源代码文件

有两种方法

方法一:使用uncompyle6库

最终通过查找各种资料得知目前uncompyle6只支持反编译python3.9以下版本的代码,故只能放弃这个方法。(其实尝试之前我就知道可能行不通,但我还是不撞南墙不回头)

方法二:使用pycdc工具,严格来说无法还原为python文件,但能看到其源代码

将pycdc.exe文件跟要还原的pyc文件放入同一个文件夹,在命令行输入命令可以在命令行显示pyc文件内的python源代码

pycdc ea_py.pyc

如果想要保存到一个文件中:

pycdc.exe xxx.pyc > 1.txt

得到字符串:

fW5hVWhjX0lhYl9he2dhbGY=

根据反编译得到的python代码,我们编写一段python代码可以得到flag

  1. import base64
  2. enflagdata=base64.b64decode('fW5hVWhjX0lhYl9he2dhbGY=')
  3. enflag=enflagdata.decode('utf-8')
  4. flag=''
  5. for i in range(len(enflag)):
  6. flag+=enflag[len(enflag)-i-1]
  7. print(flag)

输出结果:

flag{a_baI_chUan}

参考的文章链接:

Python 反编译:pycdc工具的使用-CSDN博客

Python 反编译:pyinstxtractor工具和uncompyle6库的使用-CSDN博客

[Python逆向] 逆向Pyinstaller打包的exe文件源码及保护_exe逆向分析源码-CSDN博客

Python 反编译:pycdc工具的使用-CSDN博客

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

闽ICP备14008679号