python文件输出exe文件反汇编_pyinstaller打包的.exe文件反编译成.py文件

0x00 工具

pip install uncompyle6

0x01 前言

在做ctf逆向题目时有时会遇到python写的.exe程序,如果能够将.exe反编译成python源码,就能更快解题。python打包exe文件有使用py2exe,pyinstaller,cx_Freeze,nuitka等方式,其中pyinstaller是最常用的方法。

0x02判断是否为pyinstaller打包的exe文件

IDA中打开字符串窗口,看到有一大堆Py_开头的字符串,可以判断是python写的程序

aNMxhbJjXsBKZDA.png

接着再CTRL + F搜索 pyinstaller,如果搜索的到,就可以确定是pyinstaller打包

Vvyl2nkDpaABGOX.png

0x03 .exe转.pyc

首先利用pyinstxtractor脚本将.exe文件转为.pyc文件,指令格式为

python pyinstxtractor.py exe文件名称

hcNtpvWOJMiZEDl.png

需要注意的是,如果你的本机python版本与写exe的python版本不同的话可能会失败。

最后一行显示,你可以反编译.pyc文件。

所以,我们就到生成的目录下找到.pyc文件。

注意:有时候会找不到pyc文件,这是因为生成的文件少了pyc文件头,所以我们要找到少了pyc文件头的文件。一般情况下,该文件在名称和exe名称相同的.manifest文件上面。如果不是,可以把没有后缀名的文件都试一试。

Ha5L629sGolr3AR.png

0x04 添加pyc文件头

找到目录下名为struct的文件,用二进制编辑器打开,文件的前16个字节便是少掉的pyc文件头,将其添加到pyc文件偏移量为零的位置。

eQp2HGh8tf1dwZq.png

注意,如果目录下本来就有.pyc文件也需要添加pyc文件头。

0x05 .pyc转.py

命令:

uncompyle6 -o 生成文件.py 目标文件.pyc

注意将pyc文件名改为XXX.pyc,否则会发生错误。

ESBCqy2e6ZXcdpr.png

0x06 总结

可能出现的问题:

.exe转.pyc失败,可能原因是pyinstaller打包时的python版本与你的python版本不同。

.pyc文件反编译失败,可能原因是pyc文件头没有正确添加。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值