LordMonstey/MonsteyAI-IDA-plugin

GitHub: LordMonstey/MonsteyAI-IDA-plugin

面向游戏模组逆向工程的 IDA Pro 本地 AI 助手插件,通过静态证据收集与多智能体协作辅助函数分析和修改器决策。

Stars: 0 | Forks: 0

# MonsteyAI-IDA-plugin ![MonsteyAI-IDA-plugin 横幅](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bb12483138221334.svg) [![IDA Pro](https://img.shields.io/badge/IDA%20Pro-9.0%2B-4aa3ff)](#) [![Hex-Rays](https://img.shields.io/badge/Hex--Rays-supported-9fd0ff)](#) [![Local LLM](https://img.shields.io/badge/Local%20LLM-Ollama%20%2F%20LM%20Studio-80ffb0)](#) [![Windows](https://img.shields.io/badge/Windows-x86__64-ffd36a)](#) [![License: MIT](https://img.shields.io/badge/License-MIT-white.svg)](LICENSE) 专为游戏模组逆向工程设计的 IDA Pro + Hex-Rays 本地优先 AI 助手。 Monstey 专为应对原始反编译器输出不够用的情况而生:红色/不可反编译区域、匿名 `sub_...` 丛林、跨 dump 漂移、重度 XREF 行为,以及修改器/模组分类。它让分析师留在 IDA 中,跟随当前焦点,收集有限证据,然后将其转化为名称、注释、hook 实验和结构假设。 ## 截图 ![MonsteyAI-IDA-plugin 在 IDA 中运行,进行分析和调试追踪](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2b6c5fe9d1221340.png) ## 独特之处 - **焦点感知 IDA 工作流:** 鼠标/光标焦点、焦点锁定、右键分析、红色区域 ASM 回退,以及可见的 AI 焦点指示器。 - **静态优先的逆向上下文:** 在发送 prompt 前,融合反编译器文本、汇编、字节、字符串、XREF、注释、数据引用、外部证据和按进程划分的内存。 - **修改器/模组雷达:** 每个结果都会回答如果你 hook 它会发生什么、它是否有用、首先记录什么,以及下一步运行什么实验。 - **IDA 共生操作:** Monstey 可以跳转到准确的 AI 焦点,高亮显示它,应用名称/注释/颜色,并在你导航时直接在 IDB 中标记审查点。 - **LordMonstey Made 品牌标识:** 面板打开时会播放简短的 `LordMonstey Made That` 签名动画,并带有永久的头部徽章。 - **宜人的工作流层:** 动画分析流水线、轻量级状态提示和持久化的审查队列,让冗长的 LLM 处理过程更易于跟进。 - **本地优先但灵活兼容多 Provider:** 通过 OpenAI 兼容 API 托管的 Ollama/LM Studio/vLLM 或 Gemini。 - **快速失败行为:** 语义回退、看门狗、调试追踪弹窗和可复制的诊断信息,而不是静默卡死五分钟。 - **即插即用设置:** 一条设置命令即可安装插件、配置本地默认设置、准备启动器,并可自动引导安装 Ollama。 路线图:[IDA Symbiote 路线图](docs/SYMBIOTE_ROADMAP.md) 此 MVP 的目标环境: - IDA v9.0.240925 - IDAPython - PyQt5 / Qt5 - 可用时的 Hex-Rays - Ollama, LM Studio, vLLM,任何 OpenAI 兼容的本地 endpoint,或 Gemini 托管的 OpenAI 兼容 API ## 即插即用设置 推荐首次从克隆的代码库或解压的发布包进行安装: ``` .\setup.cmd -InstallScope User -ConfigureLLM -CreateLauncher ``` 在装有 Ollama 的全新 Windows 机器上配置完整的本地技术栈: ``` .\setup.cmd -InstallScope Both -IdaPath "C:\Path\To\IDA Professional 9.0\ida.exe" -ConfigureLLM -InstallOllama -StartOllama -PullModel -CreateDesktopShortcut ``` 设置后的启动器: ``` .\MonsteyAI-Launcher.cmd -IdaPath "C:\Path\To\IDA Professional 9.0\ida.exe" ``` 直接打开 dump/IDB: ``` .\MonsteyAI-Launcher.cmd -IdaPath "C:\Path\To\ida.exe" -InputFile "C:\Path\To\dump.i64" ``` 用于提交 GitHub issue 的快速环境报告: ``` powershell -ExecutionPolicy Bypass -File .\scripts\check_environment.ps1 -IdaPath "C:\Path\To\ida.exe" ``` 创建发布 zip 包: ``` powershell -ExecutionPolicy Bypass -File .\scripts\package_release.ps1 ``` 设置说明: - `InstallScope User` 会将其安装到 `%APPDATA%\Hex-Rays\IDA Pro\plugins`,这通常是最安全的便携式目标位置。 - `InstallScope IDA` 会将其安装到所选 IDA 可执行文件旁的 `plugins` 目录中。 - `InstallScope Both` 会同时执行上述两种安装。 - `-ConfigureLLM` 会写入带有快速本地默认配置的 `~\.monstey-ai-plugin\config.json`。 - `-InstallOllama` 在可用时使用 `winget`。如果缺少 `winget`,请手动安装 Ollama 并带上 `-StartOllama -PullModel` 重新运行。 - 启动器会尽可能启动本地后端,然后打开 IDA。 - 如果未配置 IDAPython,请从 IDA 文件夹中运行 `idapyswitch.exe` 并重启 IDA。 ## 第 1 阶段可用功能 - 可停靠的 IDA 面板。 - 深色易读 UI,带有颜色编码的证据行。 - 本地模型设置。 - Provider 切换:本地/OpenAI 兼容或托管 Gemini。 - LLM 连接测试。 - 在可用时使用 Hex-Rays 伪代码分析当前函数。 - 使用汇编回退分析红色/不可反编译区域。 - 追踪最近的 IDA 导航、鼠标悬停/点击、伪代码光标、高亮标识符、活动 widget 以及附近聚焦的汇编。 - IDA 视图中的右键 `MonsteyAI-Analyse` 操作。 - 打开签名覆盖层:`LordMonstey Made That`。 - 面板标题栏中可见的 `Process:` 标签,方便你在信任结果之前确认已清理的 dump/进程上下文。 - `Mark Review` 会直接在 IDA 内当前的 AI 焦点处写入 Monstey 审查注释和颜色标记。 - 动画分析流水线显示当前处理阶段:Focus, Context, Evidence, Provider, LLM, Parse, Enrich, Ready。 - 非侵入式状态提示,用于确认跳转、复制、应用、审查标记、错误和已完成的工作流。 - `Review Queue`(审查队列)标签页存储按 dump/进程划分的标记地址,并提供跳转/复制/移除/清除控件。 - `Dump Context`(Dump 上下文)标签页,供分析师提供进程、引擎、目标、类、全局变量和命名注释。 - 分析前假设 prompt:告诉 AI 你认为该函数的作用,或者让它独立分析。 - 提取汇编、字节、调用、调用者、数据引用、字符串、注释和引擎提示。 - 通过 XREF 扩展附近的调用者/被调用者,以获取额外的角色上下文。 - 从文件名、IDB 字符串和缓存的在线查找中添加轻量级的游戏/dump 上下文。 - 要求 LLM 返回严格的 JSON。 - 预览摘要、可点击的证据、风险、游戏相关性和建议的注释。 - 当 `suggested_function_name` 有效时,在分析后自动重命名函数。 - 自动重命名非常谨慎,仅自动应用于 IDA 生成的名称(例如 `sub_7FF...`);使用 `Apply Name` 可覆盖分析师定义的名称。 - 自动将有界限的 `AI:` 注释和颜色高亮直接应用到 IDA 列表中。 - 标题栏自动化徽章,显示是否启用了自动重命名/注释。 - 设置按 LLM、上下文预算、逆向上下文和自动化进行分组。 - 强制函数分析在“下一个问题”中包含 `Lets call it and see the returns`(调用它看看返回值)和 `Lets hook it and modify something`(hook 它并修改点东西)。 - `Action Lab` 聊天以及专用的代码工作区,用于将分析转化为本地 `__fastcall` 调用框架或 MinHook 风格的 hook 脚手架。 - 仅在确认后才应用建议的函数名。 - 仅在确认后才应用建议的注释。 - 维护按进程划分的本地 `Process Map` 内存,以便后续分析可以重用之前的引擎/函数上下文。 - 跳过对超大函数的缓慢 Hex-Rays 尝试,并限制 XREF 扩展,以保持展平的函数可用。 - 位流/网络反序列化器、输出结构布局、脏掩码、按位校验和/哈希循环、魔数常量、边界检查和字符串锚点的本地语义线索。 - 紧凑的 prompt 上下文,可加快本地模型调用速度,同时保留焦点、XREF 摘要、语义线索、进程上下文和分析师提示。 - 默认禁用全局 IDB 字符串扫描,以避免 IDA 出现 `Generating a list of strings` 延迟;需要时可在设置中重新启用。 - 分析速度配置:Fast 跳过 XREF 扩展并收紧预算;Balanced/Deep 在需要时恢复更丰富的上下文。 - 状态计时显示每次分析后的上下文、LLM、反编译、XREF 和 XREF 扩展持续时间。 - 分析期间的实时处理追踪:上下文捕获、provider/model、预算、紧凑 prompt 大小、LLM 请求/响应、JSON 解析/修复、本地丰富化、心跳、超时和看门狗回退。 - 分析按钮使用受保护的启动处理程序;如果启动失败,面板会显示回溯信息并重新启用控件,而不是静默无反应。 - 多智能体共享上下文模式: - `Single`:单次分析师扫描,目前最快速/最稳定的行为。 - `Duo`:本地确定性侦察器构建共享证据包 + 主张看板,然后由一个 LLM 分析师使用它。 - `Council`:Context Council 模式。额外的智能体在分析师之前准备外部上下文(例如 XREF/调用者/被调用者/字符串证据);单核分析师仍然是最终的真理来源。 - 证据包事实支持按 ID 寻址(`F001`, `F002`, ...);主张看板假设被追踪(`C001`, `C002`, ...),以便智能体可以支持、削弱或反驳相同的主张,而不是产生分歧。 - Council 明确保留了修改器/模组的用途:hook 有用性、预期 hook 效果、修改面、首选记录的值、候选修改器功能、验证实验和稳定性说明。 - Context Council 不再运行分析后的批评者/合成者流程;这避免了共识漂移并保留了强大的独立分析,同时仍在 prompt 之前注入外部上下文。 - 智能体委员会 UI 显示侦察贡献和仅限上下文的最终定稿策略,因此漂移是可见的。 - `Trainer Target Radar`(修改器目标雷达)在每次分析后添加一个本地确定性的修改器/模组决策层:评分、判定、角色、策略、修改面、下一步行动、hook 效果、首选记录字段、适用/不适用场景以及验证实验。 - 专用的 `Trainer Radar`(修改器雷达)弹窗以更大、可复制的视图呈现修改器/模组工作区。 - `Trainer Candidates`(修改器候选者)将当前函数以及附近的调用者/被调用者排名为实用的 hook/映射候选对象。 - `Hook Experiments`(Hook 实验)生成观察/记录/比较/变异受限的实验计划,这些计划会被 Action Lab 重用。 - `XREF Evidence Map`(XREF 证据映射)显示调用者/当前函数/被调用者,以及分数和推荐的下一个 XREF 目标。 - `Structure Hypotheses`(结构假设)将偏移证据转换为小的伪结构预览,用于映射输入/输出对象。 - Action Lab 现在根据 Trainer Radar 策略、下一步行动和首选记录字段来种子化调用/hook prompt,而不是使用通用文本。 - `Feedback`(反馈)标签页存储按函数/地址划分的分析师修正,包括修正后的名称、角色、有用性、策略和注释。 - 未来的 prompt 会将最近的反馈作为高优先级的本地项目内存接收,以便模型可以避免重复已知的错误解释。 - `Pseudo Diff`(伪代码差异)标签页比较来自不同游戏版本的旧/新 Hex-Rays 伪代码,用于 hook 移植、更改的调用、常量、偏移量、结构漂移和修改器/模组影响分析。 - Pseudo Diff 具有即时本地分析器和可选的 AI 解释,并且整个报告都是可复制的。 - 速度防护 v0.3.3: - 简单的 ASM/红色区域分析不再运行额外的 Council 侦察,除非 XREF 扩展是有用的; - Fast/Balanced 简单的本地分析将繁重的 `qwen3-coder:30b` 请求路由到 `qwen2.5-coder:7b` 或 `qwen2.5-coder:14b`; - Council 子智能体拥有简短的独立预算,因此 XREF/批评者流程不会消耗整个分析过程; - UI 看门狗遵循有效的智能体模式,并在实际超时左右回退,而不是等待几分钟; - 本地超时错误现在会指明模型、endpoint 和超时预算。 - 焦点/分析可靠性 v0.3.4: - 标题栏 `AI focus` 指示器遵循“分析”按钮使用的实时 IDA 鼠标/光标焦点; - 简单的 ASM Council 请求即使存在微小的 XREF 扩展,也会降级为 Single; - 简单的 ASM 重型模型路由在 Fast/Balanced 下使用 `qwen2.5-c:7b`; - 当分析师输出在 JSON 格式错误后回退时,将跳过 Council 批评者/合成器;v0.3.6 完全禁用了这些流程; - 即使 LLM 回退信息稀疏,Trainer Radar 也会使用本地映射/遥测/日志记录用途来填充 `Good for`。 - 焦点标记 v0.3.5: - `AI focus` 移至专用的紧凑行中,这样标题栏就不会再被挤压; - 可选的 `Highlight in IDA` 切换开关会暂时更改 AI 将要分析的确切项目的颜色; - 当焦点移动或面板关闭时,旧项目颜色会恢复; - `Jump` 按钮可跳转到当前的 AI 焦点地址。 - 语义提取会在分析前剥离旧的 `AI:` 注释,因此重复的注释不会污染数值/数据流线索; - 诸如 `addss/mulss/movss [reg+index*4]` 之类的 ASM SSE 内存操作数会被映射到结构/输出槽线索中; - 诸如承受/造成伤害之类的分析师提示现在会将浮点累加器数学运算升级为具体的伤害/属性验证计划,而不是 `not_recommended`。 - Context Council / 数据防护 v0.3.6: - Council 被重写为仅限上下文的侦察系统:在单核分析师之前准备 XREF/调用者/被调用者/字符串证据,并且没有批评者/合成者重写最终答案。 - `.rdata`/非代码字符串焦点被检测为数据工件,并通过字面值和 XREF 用户在本地进行分析,而不是被误读为可执行函数。 - 数据/字符串工件跳过函数 LLM 分析,禁用调用/hook 问题,并引导 Trainer Radar 检查引用函数。 - 焦点锁定 v0.3.7: - 在 IDA 中按住 `A` 键 1.5 秒以锁定当前地址的 AI 焦点; - 再次按 `A` 键可清除锁定; - 锁定的焦点在“预览”和“分析”中优先于鼠标/光标焦点; - 焦点指示器使用更柔和的颜色,且没有明亮的大圆点。 - 静态证据来源 v0.3.8: - `Evidence Sources`(证据来源)标签页接收来自 diff 工具、capa/YARA/FindCrypt 风格规则、D-810 注释、结构/vtable 提示、签名、XREF 注释、字符串和分析师注释的离线/静态事实。 - 导入的证据按 dump 保存,以规范化形式预览,注入到 prompt 中,添加到证据包中,并在分析摘要中呈现为彩色卡片。 - 运行时样式的行可以作为注释粘贴,但工作流仍然以 dump/静态优先,并要求模型根据当前的 IDB 字节/XREF/名称验证所有内容。 - IDA 重命名事件会刷新 Monstey 上下文标签/焦点命名;重命名的全局变量/数据项无需重新打开面板即可反映出来。 - 静态集成 v0.3.9: - `Integrations`(集成)标签页为 Diaphora/BinDiff 风格的差异、capa/YARA 规则、FindCrypt 签名、D-810 注释、结构/vtable 提示、签名包和分析师注释添加了整洁的导入/规范化卡片。 - 集成输出可以作为 JSON/JSONL/CSV/文本粘贴或导入,进行预览,然后推送到 `Evidence Sources`,无需手动格式化。 - 本地 `Structure Scout` 从当前受限的 IDA 上下文中发出字段/vtable/输出槽证据。 - 本地 `Signature Scout` 发出确定性的函数指纹以及被调用者/字符串形状,用于跨 dump 匹配。 - 清理过滤 v0.3.10: - 导入的文本文件在读取时带有 4 MiB 的限制和截断通知; - Evidence Sources、Integrations、Dump Context、Process Map feedback、Pseudo Diff 以及绑定到 prompt 的文本会移除控制/ANSI 字符并强制执行长度限制; - 静态证据类型被列入白名单,未知类型变为 `note`; - 绑定到 prompt 的导入文本会中和(移除)开头的 `system:`、`assistant:` 和 `developer:` 标记; - 可变 QLabel 表面使用纯文本,而富 HTML 摘要会继续对渲染的数据进行转义。 - 即插即用设置 v0.3.11: - `setup.cmd` / `setup.ps1` 将插件安装到用户、IDA 或同时安装到这两个插件作用域; - 设置可以写入本地或 Gemini provider 配置,而不会混合特定于 provider 的密钥; - 可选的 Ollama 安装/启动/模型拉取为全新的本地 LLM 机器做好准备; - `MonsteyAI-Launcher.cmd` 启动本地后端并加载 IDA/dump; - `scripts\check_environment.ps1` 打印一份可复制的环境报告,用于支持/调试。 - `scripts\package_release.ps1` 为 GitHub 创建一个干净的发布 zip 包。 - 品牌化 + IDA 共生阶段 v0.3.12: - 公共代码库/显示名称更新为 `MonsteyAI-IDA-plugin`; - 打开覆盖层动画用 `LordMonstey Made That` 为插件签名; - 标题栏徽章强化了 `LordMonstey Made`; - `Mark Review` 按钮直接在 IDA 中为当前的 AI 焦点添加注释/颜色; - README 包含 IDA 实时截图和 IDA Symbiote 路线图的链接。 - 宜人的工作流阶段 v0.3.13: - Function 标签页获得了紧凑的动画分析流水线; - 状态提示提供轻量级的反馈,而不会取代摘要; - Review Queue(审查队列)将 `Mark Review` 地址持久化保存在本地按 dump 划分的 Process Map 中; - 审查标记可以跳转、复制、移除或清除。 - 优化阶段 v0.3.1: - prompt payload 作为紧凑的 JSON 发送,以减少 token 开销; - 进程/游戏查找除了磁盘缓存外,还使用内存缓存; - Ollama 自动启动具有启动失败冷却时间,以避免重复的长时间等待; - 语义线索 regex 被预编译; - 迷你 XREF 上下文使用有上限的引用计数,以便在大型函数上实现更快的扩展; - config 解析对格式错误的数字字段具有更高的容忍度; - 新的证据类型获得匹配的 IDA 颜色。 - Duo/Council 即使在 Fast 模式下也会收集少量的 XREF 扩展,以便上下文侦察器可以将调用者/被调用者/数据引用加入到证据中。 - 实时调试追踪在专用弹窗中打开,可以复制而不会取代最终的分析摘要。 - 函数摘要可被选择,并且可以通过 `Copy Summary` 进行复制。 - `Quick Local Pass` 按钮根据本地语义线索立即创建无 LLM 分析,用于快速的 hook/修改器分类。 - 非字符串数据引用被丰富了段/名称/类型/字节/值提示,而不是仅仅显示 `string: null`。 - 如果 LLM JSON 即使在修复后仍然格式错误,分析将回退到本地语义线索,而不是因解析错误而失败。 - Gemini 分析不再强制使用 OpenAI JSON 模式;如果 provider 超时,插件会回退到本地语义线索,而不是一直卡住。 - Action Lab 现在在构建和发送调用/hook prompt 时会发出可见的调试消息。 - 本地丰富化过程,用派生自 IDA 的数据流、结构偏移、行为、证据、注释、置信度和分析师提示一致性来填充稀疏的 LLM 输出。 - 自动生成 `Trainer assessment`(修改器评估)部分:有用性评级、预期 hook 效果、最佳 hook 策略、修改面、首选记录的值、候选修改器想法、实验和稳定性说明。 - 为结构字段读取、浮点/数字累加器循环、字节选择器/模式检查和输出数组写入提供额外的本地线索。 - 可选的兼容 OpenAI 的 JSON 模式用于分析响应,在不支持它的本地服务器上可自动回退。 - 为本地 LLM 和 Gemini 托管模式分别保存设置,因此切换 provider 不会破坏两者的配置。 ## 本地 LLM 设置 本机已安装的本地技术栈: - Ollama endpoint:`http://127.0.0.1:11434/v1` - 深度逆向模型:`qwen3-coder:30b` - 均衡模型:`qwen2.5-coder:14b` - 快速模型:`qwen2.5-coder:7b` 在另一台机器上手动设置 Ollama: ``` ollama pull qwen3-coder:30b ollama pull qwen2.5-coder:14b ollama pull qwen2.5-coder:7b ollama serve ``` 从此项目启动或验证 Ollama: ``` powershell -ExecutionPolicy Bypass -File .\scripts\start_ollama.ps1 ``` 默认 endpoint: ``` http://127.0.0.1:11434/v1 ``` 你也可以使用 LM Studio 或 vLLM,只要服务器暴露一个兼容 OpenAI 的 `/chat/completions` endpoint 即可。 ## Gemini 托管设置 插件可以通过 Google 的 OpenAI 兼容 endpoint 调用 Gemini: ``` https://generativelanguage.googleapis.com/v1beta/openai ``` 在 `Settings` 中: 1. 将 `Provider` 设置为 `Gemini hosted`。 2. 将来自 Google AI Studio 的 Gemini API key 粘贴到 `API key` 中。 3. 选择一个 Gemini 预设或手动设置模型。 4. 按 `Test LLM`。 当前的托管预设: - `Deep hosted - Gemini 2.5 Pro`:`gemini-2.5-pro` - `Balanced hosted - Gemini 2.5 Flash`:`gemini-2.5-flash` - `Fast hosted - Gemini 3.5 Flash`:`gemini-3.5-flash` 注意:Gemini/Gemini Pro 网络订阅并不总是等同于 API 访问。插件需要 Gemini API 接受的 API key。 如果 `gemini-2.5-pro` 返回 HTTP 429 并带有 `limit: 0` 配额消息,请切换到 `gemini-2.5-flash` 或为 Gemini API 项目启用计费/配额。 在 IDA 外部测试: ``` python .\scripts\test_llm.py --base-url http://127.0.0.1:11434/v1 --model qwen3-coder:30b ``` ## 在 Windows 上的 IDA 9.0 中安装 从此目录: ``` powershell -ExecutionPolicy Bypass -File .\install.ps1 ``` 该脚本会复制: - `Monstey-AI-plugin\` - `idalocalgameai_plugin.py` - `idalocalgameai\` - 诊断辅助文件 默认目标: ``` %APPDATA%\Hex-Rays\IDA Pro\plugins ``` 如果你的 IDA 用户插件目录不同: ``` powershell -ExecutionPolicy Bypass -File .\install.ps1 -IdaPluginsDir "C:\Path\To\IDAUSR\plugins" ``` 重启 IDA,然后打开面板: ``` Ctrl+Alt+G ``` 或者: ``` Edit > Plugins > MonsteyAI-IDA-plugin ``` ## 工作流 ### 常规函数 1. 悬停或单击你关心的行/指令/标识符,或将光标放在函数内部。 2. 点击 `Analyze Focus Function`。 3. 查看摘要、证据、风险和建议的名称。 4. 仅在输出合理时才应用名称/注释。 ### 红色或不可反编译区域 1. 尽可能选择红色/不可反编译的范围。 2. 否则,悬停/单击确切的红色指令或块。 3. 点击 `Analyze Focus ASM/Red`。 4. 插件将聚焦的汇编、字节、xref、字符串、调用、附近的导航上下文以及周围的函数/区域上下文发送给本地模型。 5. 将结果视为假设来审查,而不是绝对的事实。 这是为 Hex-Rays 失败、混淆函数、尾部块、手写汇编、加壳/异常控制流,或伪代码会产生误导的地方而设计的。 在向 LLM 发送任何内容之前,使用 `Preview Focus` 查看插件当前认为你的鼠标/光标焦点是什么。 右键单击工作流: 1. 在 IDA 中选择一个或多个指令,或指向聚焦的指令。 2. 在反汇编/伪代码/十六进制视图中右键单击。 3. 选择 `MonsteyAI-Analyse`。 4. 插件打开并将选择/焦点转发给本地模型。 表中的证据地址是可点击的。单击 `Address` 列或双击某行可跳转到 IDA 中的该地址。 ### 转储 Context 使用 `Dump Context` 标签页来获取动态的、由分析师提供的上下文。这将取代硬编码的游戏知识。 良好的注释包括: - 进程/产品名称; - 引擎/runtime(如果已知); - 当前的逆向目标; - 已知的全局变量、类名、管理器名、偏移量、签名; - 本地命名规则或之前的发现。 这些注释按 dump 保存在以下位置: ``` %USERPROFILE%\.monstey-ai-plugin\dump_contexts ``` 它们在每次分析中作为背景假设被注入。模型被告知将它们作为高优先级上下文使用,但对于函数级别的声明仍需引用 IDB 证据。 当你在分析前假设提示中回答 `Yes` 时,该文本将作为优先的分析师上下文单独注入。模型必须返回一个 `user_context_alignment` 块,解释当前证据是支持还是与你的提示相矛盾。 IDA 注释和颜色 `Apply Comments + Colors` 将受限的 `AI:` 注释和项颜色写入 IDA 列表: - 函数起始处获取分析摘要; - 建议的注释获得基于置信度的颜色; - 证据地址根据类型获取基于类型的颜色(例如字符串、调用、xref、asm、常量、导入和注释)。 现有的非 AI 注释将被保留;旧的 `AI:` 行将被刷新。 通过 `Settings > Auto comments/colors`,可以在每次分析后自动运行相同的行为。 ## JSON 修复 如果本地模型返回格式错误的 JSON,插件现在会自动将该原始响应连同严格的修复 prompt 发送回本地模型,然后解析修复后的 JSON。这可以捕获常见的本地模型错误,例如丢失逗号或未转义的引号。 ### 调用 / Hook Action Lab 当被分析的目标是一个函数时,结果将始终包含这些“下一个问题”: ``` Lets call it and see the returns Lets hook it and modify something ``` 相同的操作在 Function 标签页中可用作按钮。它们会打开 `Action Lab`,你可以在其中描述你想要观察或修改的内容。答案会结合当前的分析、XREF 上下文、进程上下文和你的后续文本。 对于调用,助手会提出一个专注于有效参数、返回值和日志记录的本地 `__fastcall` 框架。对于 hook,它会提出符合本项目风格的 MinHook 风格的 C++ 框架,包含 `globals::TargetFunction`、`MH_CreateHook`、`MH_EnableHook` 和安全的直接原始调用。最终的 C++ 代码块会被提取到代码工作区,你可以在其中复制或保存它。它有意避免了反作弊绕过、隐蔽、欺骗或规避逻辑。 ## 进程上下文查找 插件从以下内容构建轻量级的进程上下文: - dump/输入文件名和父文件夹; - IDB 中已存在的字符串; - 函数局部的字符串; - 启用时进行的缓存的最小 DuckDuckGo Instant Answer 查找。 dump 名称在显示和查找之前会被清理。例如,诸如 `process_name 2026 06 09 21 54 14` 之类的 dump 名称将被还原为有用的进程标识,而不是被视为完整的产品名称。 在线查找仅作为背景上下文。它被缓存在: ``` %USERPROFILE%\.monstey-ai-plugin\game_research ``` 你可以在 `Settings > Process lookup` 中禁用它。 ## 性能预算 插件避免在可疑的大型函数上进行昂贵的上下文收集: - 超出指令或字节预算的函数会跳过 Hex-Rays 反编译; - 汇编上下文保持受 `Max ASM lines` 限制; - XREF 收集和调用者/被调用者扩展有上限; - 当由于预算原因跳过伪代码时,prompt 会告知模型。 对于控制流平坦化的函数,请首先选择确切的块或红色区域,然后使用 `Analyze Focus ASM/Red`。 ## 语义线索 在调用 LLM 之前,插件现在从伪代码/ASM 中提取轻量级的语义线索: - 重复的读取器/getter 调用,例如 `read(a1, 64)`, `read(a1, 6)`, `read(a1, 9)`; - 具有显式偏移量/索引的输出结构写入; - 脏/更新掩码,例如 `*out_mask |= X`; - XOR/ROL/ROR/移位循环和大的魔数常量; - 边界/哨兵惯用语,例如 `read(width) - 1` 然后是 `0xFF` 或 `<= max`; - 硬编码字符串,优先考虑玩家/网络/身份字符串。 这些线索显示在 UI 的 `Detected local cues` 下,并注入到 prompt 中,以便模型不太可能将反序列化误读为 `memcpy`。 ## 游戏模组焦点 prompt 和 UI 围绕以下内容构建: - Unreal 模式:UObject, UClass, UFunction, ProcessEvent, GWorld, GNames, GUObjectArray。 - Unity/IL2CPP 模式:GameAssembly, global-metadata, metadata/code registration, Update/FixedUpdate。 - Source/Source 2 模式:接口,实体列表,convars,网络化变量。 - 自定义引擎:管理器,主循环,资源系统,脚本虚拟机,序列化,数据包。 ## 本地 Process Map 内存 每次成功的分析都会更新位于以下位置的 JSON 映射: ``` %USERPROFILE%\.monstey-ai-plugin\game_maps ``` 该映射存储简洁的按函数划分的发现、引擎提示、字符串、被调用者、置信度和风险。未来的 prompt 会接收此映射的紧凑版本作为项目内存,这有助于本地模型随着时间的推移连接管理器、更新循环、VM 处理程序、实体系统和不可反编译的区域。 `Feedback` 标签页将分析师的修正写入同一个映射中。当答案错误或不完整时使用它:保存修正后的角色/名称/策略和简短的解释。后续的分析会将这些修正作为优先内存接收,但 prompt 仍会要求模型根据当前的 IDA 证据验证它们。 ## 伪代码版本差异 当游戏更新更改了函数并且你想要移植旧的逆向知识时,请使用 `Pseudo Diff`: 1. 在左侧粘贴旧的 Hex-Rays 伪代码。 2. 在右侧粘贴新的 Hex-Rays 伪代码。 3. 单击 `Run Local Diff` 进行即时的机械比较。 4. 当你想要对更改的内容进行修改器/模组解释时,单击 `Ask AI Diff`。 diff 会高亮显示添加/删除的调用、常量、偏移量、更改的块、移植风险和验证实验。这对于在较新的版本上重用旧的 hook、结构偏移、签名或修改器补丁计划之前非常有用。 ## 安全边界 该插件用于理解、文档、互操作性和合法的模组研究。 它故意不提供: - 反作弊绕工程序; - exploit payload; - 恶意软件持久化/规避; - 默认情况下将二进制文件上传到云端。 默认情况下不配置云 provider。此 MVP 是本地优先的。
标签:AI风险缓解, IDA Pro 插件, LLM, Unmanaged PE, 云安全监控, 云资产清单, 人工智能, 游戏模组, 用户模式Hook绕过, 逆向工具, 逆向工程, 静态分析