主要思路:Pyinstaller编译出的.exe
文件反编译出源文件,再进行分析。
这道题是学到了怎么将Pyinstaller编译出的.exe
文件反编译出源文件,记录自己写逆向题过程,希望对你有所帮助。
将题目解压,发现是exe文件;
第一步
拖入exeinfope查看对应程序的位数架构;
看到是64位数
第二步
拖入对应位数的ida,ida为以下界面:
第三步
在刚开始的界面按tab键,进行反编译。
开始进行以下操作进行搜索。
搜索flag
可以看到很多Py的,猜测打包成exe文件之前就是python写的。
补充:
在刚看是的第一步就可以看到是PyInstaller v3.6的版本进行的封装。
第四步 Pyinstaller编译出的.exe
文件反编译出源文件
1.下载 pyinstxtractor.py
2.将pyinstxtractor.py
工具与我们要反编译的.exe
文件放入同一个工作目录下
3.当前目录终端下,输入python pyinstxtractor.py 文件名.exe
:
执行代码:
python pyinstxtractor.py easy_reverse.exe
输出:
补充:
注意要装好Python,我装了python,没配置环境导致输入python pyinstxtractor.py easy_reverse.exe 运行不出来。
第五步 定位flag
在cmd中,输入 dir /b 知道在easy_reverse.exe_extracted文件夹下面的文件,可以很显眼地看到123这个文件。
补充:
在网上搜索得知 123为pyc文件,要将pyc文件转换成py文件。
(定位flag要大胆进行猜测)
Uncompyle6 介绍
Uncompyle6,是一个Python原生的跨版本反编译器,是decompyle, uncompyle, uncompyle2的后继版本。
Uncompyle6能够将Python二进制文件pyc, pyo反编译为对应的源代码。支持Python 1.0-3.8版本的反编译,拥有较好的逻辑处理和解析能力。
我python的版本是3.11的不能用。
以下是根据这个网页内容尝试将pyc文件转换为py文件,没有成功。
怎么利用Python3.11将pyc文件反编译成py_编程语言-CSDN问答
第六步 打开123文件
可以得出应该是Base64编码。
Base64就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集。(另加一个“=”,实际是65个字符)
可以看到base64没有空格,结合运行easy_reverse.exe,是以下界面:
推测flag为 ZmxhZ3tteV9uYW1lX2lzX3NodW11fQ==
base64解码
网站:Base64 编码/解码 - 在线工具 (toolhelper.cn)
flag为 flag{my_name_is_shumu}
补充:
打开123文件,看网上说,可以用winhex打开,还未尝试。
总结:
主要是学到怎么将Pyinstaller编译出的.exe
文件反编译出源文件,在做逆向题可能涉及到编码问题。(密码学)
参考:
Python Uncompyle6 反编译工具使用 与 Magic Number 详解-CSDN博客