AI驱动的逆向工程:用tmuxMCP操控GDB与Frida

admin 2026-05-11 07:21:26 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍如何通过tmuxMCP服务器实现AI驱动的自动化逆向工程,让AI助手直接操控GDB和Frida等调试工具。文章通过两个实战案例展示完整工作流:GDB调试x86-64二进制程序分析加密逻辑提取flag,以及FridaHookAndroid应用动态拦截加密函数。重点说明了rawMode与capture-pane的关键作用,并提供了工具链安装配置指南。 综合评分: 88 文章分类: 逆向分析,二进制安全,移动安全,安全工具,红队


cover_image

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. 1. GDB 调试 x86-64 二进制 — 分析加密逻辑,提取 flag
  2. 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_sboxmd5_shiftexpected_cipherxor_key.0enc.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 &nbsp; &nbsp;# AES 加密循环前
(gdb) b *main+1749 &nbsp; &nbsp;# 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 &nbsp;0x30 &nbsp; &nbsp;# 48 字节

6. AI 自动编写解密脚本并验证

AI 根据调试结果推理出完整加密流程,编写 Python 解密脚本:

from&nbsp;Crypto.Cipher&nbsp;import&nbsp;AES
import&nbsp;hashlib

key_str =&nbsp;b'reverse_challenge_key_2024'
md5_key = hashlib.md5(key_str).digest()
iv =&nbsp;bytes([0x10,0x32,0x54,0x76,0x98,0xba,0xdc,0xfe,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
expected_cipher =&nbsp;bytes([
&nbsp; &nbsp; 0xb7,0x81,0x69,0x87,0xeb,0x02,0x46,0xef,
&nbsp; &nbsp; 0x08,0x37,0x8f,0xce,0x38,0x87,0x80,0xcf,
&nbsp; &nbsp; 0x31,0xeb,0x6c,0x1f,0xdb,0x5e,0xfd,0xd1,
&nbsp; &nbsp; 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)&nbsp; # flag{aes_md5_r3vers3_ez!}

AI 完成了从启动 GDB 到逐步分析加密逻辑、提取密钥、编写解密脚本的全过程:

AI 完成 GDB 调试全过程

程序加密流程

enc.1 XOR "WoRkTHi3" → "reverse_challenge_key_2024"
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MD5
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AES-128 密钥 (16 bytes)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │
用户输入 → 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. 1. 多窗格并行操作
  2. 2. 会话持久化(SSH 断连不丢失 Frida 会话)
  3. 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() {
&nbsp; &nbsp; var&nbsp;NativeAES&nbsp;=&nbsp;Java.use("com.example.checkflag.NativeAES");
&nbsp; &nbsp; var&nbsp;MainActivity&nbsp;=&nbsp;Java.use("com.example.checkflag.MainActivity");

&nbsp; &nbsp; // Hook buildMd5Source 获取 XOR 解密结果
&nbsp; &nbsp; MainActivity.buildMd5Source.implementation&nbsp;=&nbsp;function() {
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;result =&nbsp;this.buildMd5Source();
&nbsp; &nbsp; &nbsp; &nbsp; console.log("[*] buildMd5Source: "&nbsp;+&nbsp;bytesToHex(result));
&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;result;
&nbsp; &nbsp; };

&nbsp; &nbsp; // Hook encrypt,拦截 key 和 IV,直接解密
&nbsp; &nbsp; NativeAES.encrypt.implementation&nbsp;=&nbsp;function(data, key, iv) {
&nbsp; &nbsp; &nbsp; &nbsp; console.log("[*] Key: "&nbsp;+&nbsp;bytesToHex(key));
&nbsp; &nbsp; &nbsp; &nbsp; console.log("[*] IV: "&nbsp;+&nbsp;bytesToHex(iv));

&nbsp; &nbsp; &nbsp; &nbsp; // 用 javax.crypto 在设备上直接解密
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;SecretKeySpec&nbsp;=&nbsp;Java.use("javax.crypto.spec.SecretKeySpec");
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;IvParameterSpec&nbsp;=&nbsp;Java.use("javax.crypto.spec.IvParameterSpec");
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;Cipher&nbsp;=&nbsp;Java.use("javax.crypto.Cipher");

&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;keySpec =&nbsp;SecretKeySpec.$new(key,&nbsp;"AES");
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;ivSpec =&nbsp;IvParameterSpec.$new(iv);
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;cipher =&nbsp;Cipher.getInstance("AES/CBC/NoPadding");
&nbsp; &nbsp; &nbsp; &nbsp; cipher.init(2, keySpec, ivSpec);

&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;expectedBytes =&nbsp;Java.array('byte',&nbsp;EXPECTED_CIPHER);
&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;decrypted = cipher.doFinal(expectedBytes);
&nbsp; &nbsp; &nbsp; &nbsp; console.log("[*] Decrypted flag: "&nbsp;+&nbsp;bytesToAscii(decrypted));

&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;this.encrypt(data, key, iv);
&nbsp; &nbsp; };
});

3. tmux 多窗格执行

┌─────────────────────────────────────────────┐
│ Pane 1: Frida REPL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│
│ [Pixel 4::com.example.checkflag ]-> &nbsp; &nbsp; &nbsp; &nbsp; │
│ [*] MD5 hash (AES key): 9086dc3e... &nbsp; &nbsp; &nbsp; &nbsp; │
│ [*] Decrypted flag: flag{aes_md5_r3vers3... │
├─────────────────────────────────────────────┤
│ Pane 2: adb 操作 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │
│ $ adb shell input tap 540 1320 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│
│ $ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │
└─────────────────────────────────────────────┘

AI 通过 tmux MCP 的操作序列:

  1. 1. create-session — 创建会话
  2. 2. execute-command(rawMode: true) — 启动 Frida spawn 模式
  3. 3. split-pane — 分割出第二个窗格
  4. 4. execute-command — 在 Pane 2 执行 adb input 触发按钮
  5. 5. capture-pane — 读取 Pane 1 的 Frida 输出

AI 完成 Frida Hook 全过程

总结

tmux MCP 把 AI 从”建议者”变成了”操作者”。它不是替代逆向工程师的判断力,而是把重复性的调试操作自动化,让人可以专注在更高层的分析和决策上。

对于标准化的逆向任务(提取密钥、分析加密流程、hook 函数拦截参数),这套工作流已经可以做到端到端自动完成。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:二进制磨剑 二进制磨剑 二进制磨剑《AI 驱动的逆向工程:用 tmux MCP 操控 GDB 与 Frida》

揭秘支付逻辑中的隐秘陷阱 网络安全文章

揭秘支付逻辑中的隐秘陷阱

文章总结: 本文揭示支付系统中存在的逻辑漏洞风险,如金额篡改、重复支付等安全隐患,强调输入验证与权限控制的重要性,并提出加强审计日志、采用多因素认证等防护建议。
裁员10%!日产在欧洲开刀 网络安全文章

裁员10%!日产在欧洲开刀

文章总结: 日产汽车在欧洲裁减约900个岗位(占员工总数10%),作为全球重组计划的一部分,主要涉及白领和仓储岗位,同时整合英国工厂生产线并关闭西班牙部分仓库。
评论:0   参与:  0