文章总结: 本文介绍如何通过tmuxMCP服务器实现AI驱动的自动化逆向工程,让AI助手直接操控GDB和Frida等调试工具。文章通过两个实战案例展示完整工作流:GDB调试x86-64二进制程序分析加密逻辑提取flag,以及FridaHookAndroid应用动态拦截加密函数。重点说明了rawMode与capture-pane的关键作用,并提供了工具链安装配置指南。 综合评分: 88 文章分类: 逆向分析,二进制安全,移动安全,安全工具,红队
AI 驱动的逆向工程:用 tmux MCP 操控 GDB 与 Frida
原创
二进制磨剑 二进制磨剑
二进制磨剑
2026年5月7日 14:57 四川
在小说阅读器读本章
去阅读
AI 驱动的逆向工程:用 tmux MCP 操控 GDB 与 Frida
让 AI 助手直接操控调试器,实现全自动化逆向分析。
背景
逆向工程的核心工作流是:启动调试器 → 设断点 → 运行 → 观察状态 → 推理逻辑。这个过程高度依赖交互式终端操作,传统上只能由人手动完成。
现在,通过 tmux MCP(Model Context Protocol)服务器,AI 助手可以直接操控终端中的 GDB、Frida 等交互式工具。AI 不再只是”建议你输入什么命令”,而是自己动手调试、自己分析结果、自己定位答案。
本文通过两个示例展示这套工作流:
- 1. GDB 调试 x86-64 二进制 — 分析加密逻辑,提取 flag
- 2. Frida Hook Android 应用 — 动态拦截加密函数,直接解密
工具链安装
tmux + tmux MCP
# 安装 tmux
sudo apt install -y tmux # Debian/Ubuntu
brew install tmux # macOS
# 安装 tmux MCP 服务器
npm install -g tmux-mcp
配置 Claude Code 连接 tmux MCP
claude mcp add tmux -- npx -y tmux-mcp
添加成功后会看到确认信息:
claude mcp add
通过 /mcp 命令可以验证连接状态:
mcp connected
GDB 与 Frida
# GDB
sudo apt install -y gdb
# Frida(需要 Python 环境)
pip install frida-tools
核心概念:rawMode 与 capture-pane
tmux MCP 提供以下关键工具:
| 工具 | 用途 |
| — | — |
| create-session | 创建 tmux 会话 |
| split-pane | 分割窗格(多窗格并行) |
| execute-command | 在窗格中执行命令 |
| capture-pane | 捕获窗格当前输出 |
操控 GDB、Frida 这类交互式程序时,必须使用 rawMode: true。原因是这些程序启动后不会退出,普通模式会等待命令结束导致超时。rawMode 下发送命令后,通过 capture-pane 读取输出结果。
工作流程:
execute-command(rawMode: true) → 发送 gdb 命令
↓
capture-pane → 读取 gdb 输出
↓
AI 分析输出 → 决定下一步操作
↓
execute-command(rawMode: true) → 发送下一条命令
示例一:GDB 调试 x86-64 二进制程序
场景
一个 check_flag 程序,输入正确的 flag 才会输出 “Correct!”。程序使用了 AES 加密、MD5 哈希和 XOR 混淆。
AI 自动调试过程
只需一句话指令:
分析这个二进制程序,用 tmux 来调用 gdb 调试得到 flag
AI 启动 GDB 调试
AI 自动完成了以下步骤:
1. 创建 tmux 会话并启动 GDB
tmux create-session → gdb ./check_flag (rawMode: true)
2. 信息收集 — 反汇编 main 函数
AI 发现关键符号:aes_sbox、md5_shift、expected_cipher、xor_key.0、enc.1,判断这是一个 XOR + MD5 + AES 的加密流程。
3. 查看静态数据
(gdb) x/s 0x2040
0x2040 <xor_key.0>: "WoRkTHi3"
(gdb) x/32bx 0x2050
0x2050 <enc.1>: 0x25 0x0a 0x24 0x0e 0x26 0x3b 0x0c 0x6c ...
4. 设断点并运行
(gdb) b *main+1046 # AES 加密循环前
(gdb) b *main+1749 # memcmp 调用处
(gdb) run
Enter flag: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
5. 提取关键数据
# XOR 解密结果
(gdb) x/s $rsp+0x100
"reverse_challenge_key_2024"
# AES IV
(gdb) x/16bx $rsp+0x50
0x10 0x32 0x54 0x76 0x98 0xba 0xdc 0xfe
0x01 0x23 0x45 0x67 0x89 0xab 0xcd 0xef
# memcmp 比较长度
(gdb) info registers rdx
rdx 0x30 # 48 字节
6. AI 自动编写解密脚本并验证
AI 根据调试结果推理出完整加密流程,编写 Python 解密脚本:
from Crypto.Cipher import AES
import hashlib
key_str = b'reverse_challenge_key_2024'
md5_key = hashlib.md5(key_str).digest()
iv = bytes([0x10,0x32,0x54,0x76,0x98,0xba,0xdc,0xfe,
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
expected_cipher = bytes([
0xb7,0x81,0x69,0x87,0xeb,0x02,0x46,0xef,
0x08,0x37,0x8f,0xce,0x38,0x87,0x80,0xcf,
0x31,0xeb,0x6c,0x1f,0xdb,0x5e,0xfd,0xd1,
0xf1,0xc9,0x15,0x59,0xa0,0x8e,0x11,0xec])
cipher = AES.new(md5_key, AES.MODE_CBC, iv)
decrypted = cipher.decrypt(expected_cipher)
flag = decrypted[:-decrypted[-1]].decode()
print(flag) # flag{aes_md5_r3vers3_ez!}
AI 完成了从启动 GDB 到逐步分析加密逻辑、提取密钥、编写解密脚本的全过程:
AI 完成 GDB 调试全过程
程序加密流程
enc.1 XOR "WoRkTHi3" → "reverse_challenge_key_2024"
│
MD5
↓
AES-128 密钥 (16 bytes)
│
用户输入 → AES-128-CBC(key, IV) → 密文 → memcmp(expected_cipher)
整个过程 AI 调用了约 7 次 tmux 工具,从启动 GDB 到拿到 flag,全程无需人工介入。
示例二:Frida Hook Android 应用
场景
同样的加密逻辑被移植到 Android 应用 com.example.checkflag。这次用 Frida 动态 hook,在运行时拦截加密函数并直接解密。
为什么需要 tmux
Frida 的工作模式决定了必须多窗格并行:
- • Pane 1:Frida REPL(前台交互进程,持续输出 hook 日志)
- • Pane 2:adb 命令(触发 app UI 交互)
单终端无法同时运行两者。tmux 解决了:
- 1. 多窗格并行操作
- 2. 会话持久化(SSH 断连不丢失 Frida 会话)
- 3. 实时观察 hook 输出
AI 自动 Hook 过程
指令:
你当前目录是一个 app,你先阅读源码,写 frida 脚本,用 tmux 运行 frida 来 hook 这个 app(adb 已经连接)来 getflag,不要直接静态分析。
AI Frida Hook 过程
AI 的操作流程:
1. 分析源码,理解加密逻辑
AI 先用 Explore agent 阅读 app 源码,理解了:
- •
buildMd5Source():XOR 解密得到 MD5 源数据 - •
md5Hash():生成 AES 密钥 - •
NativeAES.encrypt():JNI 层 AES-CBC 加密
2. 编写 Frida 脚本
Java.perform(function() {
var NativeAES = Java.use("com.example.checkflag.NativeAES");
var MainActivity = Java.use("com.example.checkflag.MainActivity");
// Hook buildMd5Source 获取 XOR 解密结果
MainActivity.buildMd5Source.implementation = function() {
var result = this.buildMd5Source();
console.log("[*] buildMd5Source: " + bytesToHex(result));
return result;
};
// Hook encrypt,拦截 key 和 IV,直接解密
NativeAES.encrypt.implementation = function(data, key, iv) {
console.log("[*] Key: " + bytesToHex(key));
console.log("[*] IV: " + bytesToHex(iv));
// 用 javax.crypto 在设备上直接解密
var SecretKeySpec = Java.use("javax.crypto.spec.SecretKeySpec");
var IvParameterSpec = Java.use("javax.crypto.spec.IvParameterSpec");
var Cipher = Java.use("javax.crypto.Cipher");
var keySpec = SecretKeySpec.$new(key, "AES");
var ivSpec = IvParameterSpec.$new(iv);
var cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(2, keySpec, ivSpec);
var expectedBytes = Java.array('byte', EXPECTED_CIPHER);
var decrypted = cipher.doFinal(expectedBytes);
console.log("[*] Decrypted flag: " + bytesToAscii(decrypted));
return this.encrypt(data, key, iv);
};
});
3. tmux 多窗格执行
┌─────────────────────────────────────────────┐
│ Pane 1: Frida REPL │
│ [Pixel 4::com.example.checkflag ]-> │
│ [*] MD5 hash (AES key): 9086dc3e... │
│ [*] Decrypted flag: flag{aes_md5_r3vers3... │
├─────────────────────────────────────────────┤
│ Pane 2: adb 操作 │
│ $ adb shell input tap 540 1320 │
│ $ │
└─────────────────────────────────────────────┘
AI 通过 tmux MCP 的操作序列:
- 1.
create-session— 创建会话 - 2.
execute-command(rawMode: true)— 启动 Frida spawn 模式 - 3.
split-pane— 分割出第二个窗格 - 4.
execute-command— 在 Pane 2 执行 adb input 触发按钮 - 5.
capture-pane— 读取 Pane 1 的 Frida 输出
AI 完成 Frida Hook 全过程
总结
tmux MCP 把 AI 从”建议者”变成了”操作者”。它不是替代逆向工程师的判断力,而是把重复性的调试操作自动化,让人可以专注在更高层的分析和决策上。
对于标准化的逆向任务(提取密钥、分析加密流程、hook 函数拦截参数),这套工作流已经可以做到端到端自动完成。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:二进制磨剑 二进制磨剑 二进制磨剑《AI 驱动的逆向工程:用 tmux MCP 操控 GDB 与 Frida》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论