逆向工程系列第三篇:二进制分析与破解实战
逆向工程系列(三)
这是逆向工程系列教程,我们将共同学习 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 函数验证以下方程:
复制代码
sub_4006c0 函数应输出-8, -3, 13。由于逻辑较复杂,我们借助 Ghidra 分析发现该函数实际检查输入的十六进制值。
破解二进制
将-8, -3, 13 转换为十六进制:
-8 → FFFFFFF8
-3 → FFFFFFFD
13 → D
如果觉得有用请点赞,关注我获取更多黑客知识。
使用以下命令重建文件:
复制代码
更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

办公AI智能小助手
评论