700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > exe反编译为python语言_pyinstaller打包的.exe文件反编译成.py文件

exe反编译为python语言_pyinstaller打包的.exe文件反编译成.py文件

时间:2022-08-04 07:45:46

相关推荐

exe反编译为python语言_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写的程序

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

0x03 .exe转.pyc

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

python pyinstxtractor.py exe文件名称

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

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

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

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

0x04 添加pyc文件头

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

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

0x05 .pyc转.py

命令:

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

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

0x06 总结

可能出现的问题:

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。