[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80049":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":32,"discoverSource":33},80049,"ida-agent-bridge","TsingShui\u002Fida-agent-bridge","TsingShui","A CLI-first, headless, AI-native IDA Pro bridge built on Unix philosophy.","",null,"Python",72,8,63,0,2,3,9,6,2.86,"MIT License",false,"main",[25,26,27,28],"claude-code","ida","ida-cli","skill","2026-06-12 02:03:57","# ida-agent-bridge\n\n[English](README.en.md)\n\n**让 AI 像读源码一样读二进制。**\n\nida-agent-bridge 是一个无头的 IDA Pro 桥，把 IDA 的全部能力——反编译、交叉引用、类型系统、字节级操作——暴露为纯文本短连接协议。反编译结果实时同步到本地文件系统；重命名、注释、patch 字节——改动瞬间落盘，调用方级联刷新。\n\n一条管道，从二进制到答案。\n\n## 30 秒体验\n\n```\n$ ida-bridge a.out &\nINFO  sync done in 47.2s\n\n$ cc \"分析 a.out 里的 JNI 函数，找出签名逻辑\"\n```\n\nAgent 自动开始工作：\n\n```\n> 读 ida-bridge-a.out\u002Ffunction_index.tsv，搜 jni...\n  找到 3 个函数：jni_sign_data (0x401320)、jni_verify_sig (0x4014d8)、JNI_OnLoad (0x4012a0)\n\n> echo '!pdc 0x401320' | nc localhost 13120\n  void *jni_sign_data(JNIEnv *env, jobject thiz, jbyteArray data) {\n      v3 = HMAC_CTX_new();\n      HMAC_Init_ex(v3, &g_secret_key, 32, EVP_sha256(), 0);\n      ...\n  }\n\n> echo '!axt 0x401320' | nc localhost 13120\n  0x4012a0  CALL_NEAR  [in: JNI_OnLoad]\n\n> echo '!afn 0x401320 Java_com_example_Crypto_sign' | nc localhost 13120\n  renamed: jni_sign_data → Java_com_example_Crypto_sign\n\n> 读 ida-bridge-a.out\u002Fdecompile\u002F401320.c  ← 确认同步\n  ; Java_com_example_Crypto_sign @ 0x401320  ✓\n\n结论：签名使用 HMAC-SHA256，密钥硬编码在 g_secret_key (0x60A0B0)，长度 32 字节。\n```\n\n**这就是它的全部理念：** Agent 读文件系统发现函数，发一行命令获取伪代码，再发一行命令追踪引用——如同人类逆向工程师在 IDA 里的操作流程，只是每一步都是可以管道化的纯文本。\n\n---\n\n## 安装\n\n**环境要求：** IDA Pro 9.1+、Python 3.13+、[uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F)\n\n```bash\n# 1. 设置 IDA 路径\n# macOS 示例：\nexport IDADIR=\"\u002FApplications\u002FIDA Professional 9.3.app\u002FContents\u002FMacOS\"\n\n# 2. 安装\ngit clone https:\u002F\u002Fgithub.com\u002FTsingShui\u002Fida-agent-bridge.git ~\u002F.claude\u002Fskills\u002Fida-agent-bridge\nuv tool install -e ~\u002F.claude\u002Fskills\u002Fida-agent-bridge\n```\n\n两行完事。\n\n## 使用\n\n```bash\nida-bridge a.out              # 启动，导出到 .\u002Fida-bridge-a.out\u002F\nida-bridge a.out --human-shell  # 另开交互 shell（端口 13121）\nida-bridge a.out --skip-export  # 跳过导出，仅启动 REPL\n```\n\n首次启动做一次全量导出（IDA 自动分析 + 反编译所有函数）。之后每次启动对比 CRC32 hash，只增量导出变更函数，秒级完成。\n\n---\n\n## 设计理念\n\n### 文件系统即 API\n\n启动后，二进制的全部结构被映射为本地文件——Agent 无需任何 SDK，`cat` 一个文件就能读到伪代码：\n\n```\nida-bridge-a.out\u002F\n├── decompile\u002F            每个函数一个 .c 文件（伪代码 + 元数据）\n├── function_index.tsv    全量函数索引（地址、名称、复杂度指标、调用图）\n├── strings.tsv           字符串表\n├── imports.tsv           导入表\n├── exports.tsv           导出表\n├── hash_index.json       CRC32 增量检测\n└── export_config.json    导出配置\n```\n\n### 实时同步\n\n通过 REPL 重命名函数、修改注释、patch 字节——对应的 `.c` 文件和索引瞬间更新，调用方级联刷新：\n\n| 操作 | 更新范围 |\n|------|----------|\n| 重命名函数\u002F符号 | 该函数 + 所有 caller |\n| 修改注释 | 该函数 |\n| 重命名栈帧变量 | 该函数 |\n| 修改类型信息 | 该函数 |\n| patch 字节（代码段） | 该函数 |\n| patch 字节（数据段） | strings.tsv |\n| 删除函数 | 删除 .c 文件 + 更新索引 |\n\n### Unix 哲学：一切皆文本\n\n每条命令输出纯文本到 stdout。不需要 JSON 解析器，不需要 SDK——`grep`、`awk`、`sort` 就是你的工具箱：\n\n```bash\n# 找被调用最多的前 10 个函数\necho '!afl' | nc localhost 13120 | sort -t= -k2 -rn | head -10\n\n# 所有大于 0x200 字节的未命名函数\necho '!afl' | nc localhost 13120 | awk -F'\\t' '$3 >= 0x200 && $2 ~ \u002F^sub_\u002F'\n\n# 从伪代码提取所有被调用函数名\necho '!pdc main' | nc localhost 13120 | grep -oP '\\b\\w+(?=\\()' | sort -u\n\n# 批量搜索引用加密相关字符串的函数\nADDR=$(echo '!iz encrypt' | nc localhost 13120 | awk 'NR==1{print $1}')\necho \"!axt $ADDR\" | nc localhost 13120\n```\n\n---\n\n## 命令速查\n\n所有命令通过 `echo '!cmd' | nc localhost 13120` 短连接发送，地址支持十六进制（`0x1388`）或符号名（`main`）。\n\n**查询**\n\n```\n!afl [pat]                  函数列表（支持模糊搜索）\n!afi \u003Caddr|name>            函数详情\n!iz  [pat]                  字符串搜索\n!axi \u003Cname>                 导入符号的调用点\n!axt \u003Caddr|name>            交叉引用 to\n!axf \u003Caddr|name>            交叉引用 from\n!deps \u003Caddr|name> [d=3]     递归调用链\n```\n\n**反编译 \u002F 反汇编**\n\n```\n!pdc \u003Caddr|name> [-s]       伪代码（-s 去掉变量声明）\n!pdf \u003Caddr|name>            整函数反汇编（带 CFG 标注）\n!pd  \u003Caddr|name> [n=16]     从地址反汇编 n 条指令\n!mc  \u003Caddr|name> [maturity] 微码\n```\n\n**修改**\n\n```\n!afn \u003Caddr|name> \u003Cnew_name> 重命名函数\n!cc  \u003Caddr|name> \u003Ctext>     设函数注释\n!ca  \u003Caddr> \u003Ctext>          设地址注释\n```\n\n**工具**\n\n```\n!hd  \u003Caddr|name> [n=64]     hexdump\n!sb  \u003Chex> [start] [end]    搜字节序列\n!syms \u003Cpath>                导出符号表\n!ping                       探活，返回打开的文件路径\n!pwd                        工作目录\n!quit                       关闭服务\n```\n\n---\n\n## Python 脚本\n\n命令不够用时发 Python 脚本。`db`（[ida-domain](https:\u002F\u002Fgithub.com\u002Fkohnakagawa\u002Fida-domain)）已预注入，原生 `ida_*` 模块同样可用：\n\n```bash\ncat script.py | nc localhost 13120\n```\n\n```python\n# 找大函数 + 高调用量 → 可能是核心逻辑\nfor func in db.functions.get_all():\n    size = func.end_ea - func.start_ea\n    name = db.functions.get_name(func)\n    if size > 0x500 and name.startswith(\"sub_\"):\n        callers = list(db.functions.get_callers(func))\n        print(f\"{hex(func.start_ea)}  {size:#x}  callers={len(callers)}  {name}\")\n```\n\n脚本中的修改（重命名、注释等）同样自动触发文件系统同步。\n\n## 交互 Shell\n\n给人用的模式——带命令历史和实时补全：\n\n```bash\nida-bridge a.out --shell\nrlwrap nc localhost 13121\n```\n\n```\n> !afl jni\n0x4012a0  JNI_OnLoad       0x80   callers=0\n0x401320  jni_sign_data    0x1b4  callers=1\n0x4014d8  jni_verify_sig   0xc8   callers=1\n\n> !deps jni_sign_data 2\njni_sign_data  [0x401320]\n  CRYPTO_sign  [0x402100]\n    EVP_DigestSign  [0x403800]\n    ...\n\n> !afn 0x401320 Java_com_example_sign\nrenamed 0x401320: jni_sign_data → Java_com_example_sign\n```\n\n---\n\n## License\n\nMIT\n","ida-agent-bridge 是一个无头的 IDA Pro 桥，旨在通过纯文本短连接协议将 IDA 的全部功能（如反编译、交叉引用、类型系统和字节级操作）暴露出来。其核心特点是基于 Unix 哲学设计，所有操作均以纯文本形式进行，便于与现有工具链集成；支持实时同步到本地文件系统，确保改动即时生效并自动刷新相关依赖。该项目适用于需要自动化逆向工程流程的场景，例如安全研究、软件审计以及恶意代码分析等。用户可以通过简单的命令行交互来执行复杂的二进制分析任务，而无需直接操作图形界面。","2026-06-11 03:59:02","CREATED_QUERY"]