逆向工程系列(三)
这是逆向工程系列教程,我们将共同学习RE技术。欢迎提出建议。文末提供二进制文件。
工具清单
- file
- ltrace
- strings
- gdb
- ida64
- Ghidra
- readelf
二进制分析
输入输出分析
通过file
和ltrace
命令进行基础分析
字符串分析
使用strings
命令三次扫描提取关键字符串
readelf分析
通过readelf发现二进制使用了以下函数:
- printf
- fdopen
- fclose
- memset
- exit
- fgetc
IDA Pro & Ghidra分析
现在我们将使用IDA Pro和Ghidra进行深入分析。
汇编代码摘要:
- 打印"?"提示符
- 创建stdin流并传递给sub_4006c0函数
- 如果sub_4006c0使rdx归零,则进入下一代码块
- 重复步骤1两次
- 将sub_4006c0调用结果存入dword变量
- 若fun_checker返回0给rax,即可获得flag
fun_checker函数验证以下方程:
我们需要解这个线性方程组来获取a,b,c的值
sub_4006c0函数应输出-8, -3, 13。由于逻辑较复杂,我们借助Ghidra分析发现该函数实际检查输入的十六进制值。
破解二进制
将-8, -3, 13转换为十六进制:
- -8 → FFFFFFF8
- -3 → FFFFFFFD
- 13 → D
如果觉得有用请点赞,关注我获取更多黑客知识。
使用以下命令重建文件:
base64 -d x3.base64 > viewuser
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码