<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>逆向工程 - Kyro Blog</title><link>https://kyroqu.xyz/tags/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/</link><description>逆向工程 的文章 - Kyro Blog</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sun, 04 Oct 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://kyroqu.xyz/tags/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>IDA Pro 9.4 体验与 STM32 固件逆向</title><link>https://kyroqu.xyz/posts/ida-pro-9-4-guide/</link><pubDate>Sun, 04 Oct 2026 18:00:00 +0800</pubDate><guid>https://kyroqu.xyz/posts/ida-pro-9-4-guide/</guid><description>记录 IDA Pro 9.4 逆向体验：以 STM32G431 固件为例，梳理固件加载、SRAM 与外设段配置、SVD 寄存器映射及 F5 反编译流程，并体验官方 IDA MCP 接入 Claude 的全新玩法。</description><content:encoded><![CDATA[<h2 id="简介">简介</h2>
<p><strong>IDA Pro</strong>（全称 <strong>Interactive Disassembler Professional</strong>）是由比利时 Hex-Rays 公司开发的二进制逆向分析与反汇编工具。</p>
<p>软件经典图标是法国路易十四的第二任配偶——曼特农夫人。</p>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004121726655.png"
  alt="IDA Pro 图标"
  loading="lazy"
  decoding="async"
/>
</p>
<p>IDA Pro 常用于 ARM / x86 等架构的反编译，在单片机与嵌入式固件分析、恶意软件与病毒行为逆向、提取特征码、竞品功能拆解还原，以及游戏安全与外挂分析等场景中，都是极其重要的工具。</p>
<p><strong>Interactive DisAssembler（交互式反汇编）的基本流程</strong>：</p>
<p>二进制文件 
<span class="math-inline">\(\rightarrow\)</span>

 汇编代码 
<span class="math-inline">\(\rightarrow\)</span>

 函数/控制流 
<span class="math-inline">\(\rightarrow\)</span>

 伪代码 
<span class="math-inline">\(\rightarrow\)</span>

 理解程序逻辑</p>
<p>除了商业逆向标准的 IDA Pro，开源领域还有 NSA 推出的 <a href="https://github.com/NationalSecurityAgency/ghidra/releases">Ghidra</a>。如果用 Ghidra 分析 MCU 固件，可以通过社区的 <a href="https://github.com/leveldown-security/SVD-Loader-Ghidra">SVD-Loader-Ghidra</a> 插件把厂商提供的 SVD 外设寄存器定义导入进去。</p>
<h3 id="ida-pro-常见分析对象">IDA Pro 常见分析对象</h3>
<table>
	<thead>
			<tr>
					<th style="text-align: left">文件 / 程序</th>
					<th style="text-align: left">用途说明</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong><code>.exe</code></strong></td>
					<td style="text-align: left">Windows 桌面程序逆向</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.dll</code></strong></td>
					<td style="text-align: left">动态链接库分析</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.elf</code></strong></td>
					<td style="text-align: left">Linux 应用程序 / 嵌入式程序</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.so</code></strong></td>
					<td style="text-align: left">Linux / Android Native 动态库</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.bin</code></strong></td>
					<td style="text-align: left">裸机固件（Raw Binary）</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.hex</code></strong></td>
					<td style="text-align: left">Intel HEX 单片机固件</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong><code>.axf</code></strong></td>
					<td style="text-align: left">ARM 嵌入式带调试信息镜像</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Android ELF</strong></td>
					<td style="text-align: left">安卓底层 Native 代码</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Bootloader</strong></td>
					<td style="text-align: left">设备启动引导代码分析</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>MCU Firmware</strong></td>
					<td style="text-align: left">各类微控制器固件分析</td>
			</tr>
	</tbody>
</table>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261003221821994.png"
  alt="IDA Pro 支持架构概览"
  loading="lazy"
  decoding="async"
/>
</p>
<h3 id="常用核心快捷键">常用核心快捷键</h3>
<ul>
<li><strong><code>G</code></strong>：跳转到指定内存或虚拟地址（Jump to address）</li>
<li><strong><code>F5</code></strong>：一键生成伪 C 代码（反编译）</li>
<li><strong><code>Space</code></strong>：在流程图（Graph View）和文本汇编模式之间切换</li>
</ul>
<hr>
<h2 id="分析-stm32-固件">分析 STM32 固件</h2>
<p>在嵌入式逆向中，常见需求包括分析单片机固件逻辑、提取固件算法、破解或去除设备 UID 绑定保护等。这里以 <strong>STM32G431</strong> 的 <code>.hex</code> 固件为例进行逆向记录。</p>
<h3 id="打开工程与处理器配置">打开工程与处理器配置</h3>
<p>打开 IDA 选择待逆向的固件文件：</p>
<ul>
<li>处理器类型选择：<code>ARM processors</code> 
<span class="math-inline">\(\rightarrow\)</span>

 <code>ARM Little-endian</code></li>
<li>关键地址参数：
<ul>
<li>内部 Flash 起始地址：<code>0x08000000</code></li>
<li>SRAM 起始地址：<code>0x20000000</code></li>
</ul>
</li>
<li><strong><code>.bin</code> 与 <code>.hex</code> 的区别</strong>：
<ul>
<li>纯二进制文件（<code>.bin</code>）不包含任何加载地址信息，打开时<strong>必须手动指定</strong> ROM 起始地址（如 <code>0x08000000</code>），否则代码跳转地址全会错位；</li>
<li>Intel HEX 文件（<code>.hex</code>）本身带有地址记录类型（Record Type），记录了数据的物理绝对地址，IDA 会自动识别并将基地址设置为 <code>0x08000000</code>。</li>
</ul>
</li>
</ul>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261003234345499.png"
  alt="选择固件与处理器参数"
  loading="lazy"
  decoding="async"
/>
</p>
<ul>
<li>点击 <strong>Processor options</strong>（处理器选项）：
<ul>
<li>指定具体核心为 <strong>Cortex-M4</strong></li>
<li>Base architecture：<code>ARMv7-M</code></li>
<li>VFP instructions：<code>VFPv4</code></li>
<li>Thumb instructions：<code>Thumb-2</code></li>
</ul>
</li>
</ul>
<h3 id="确认加载弹窗">确认加载弹窗</h3>
<p>配置完成后点击确定，IDA 会弹出两个确认框：</p>
<p><strong>提示 1：ARM 与 Thumb 模式切换说明</strong><br>
Cortex-M 系列内核只执行 Thumb/Thumb-2 指令，不执行传统 32 位 ARM 指令。IDA 会提示默认反汇编状态，点击 <strong>OK</strong> 即可。</p>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/2f9e417d-d1d5-4e79-b1a5-cb9b762c9f14.png"
  alt="Thumb 模式切换提示"
  loading="lazy"
  decoding="async"
/>
</p>
<p><strong>提示 2：自动更新与 Lumina 服务器提示</strong><br>
IDA 启动时默认会检查更新，并提示是否使用 Lumina 云端服务器辅助识别函数。</p>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261003234519703.png"
  alt="版本检查与 Lumina 弹窗"
  loading="lazy"
  decoding="async"
/>
</p>
<p><strong>实操处理步骤</strong>：</p>
<ol>
<li><strong>取消勾选</strong> <code>Automatically check for new versions</code>；</li>
<li><strong>取消勾选</strong> <code>自动使用 Lumina 服务器进行分析(L)</code>（避免把敏感固件特征上传，也避免因网络连不上导致卡顿）；</li>
<li>点击 <strong>确定</strong> 进入反汇编主工作区。</li>
</ol>
<hr>
<h2 id="工作区速览">工作区速览</h2>
<h3 id="文件导航槽navigation-band">文件导航槽（Navigation Band）</h3>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261003235924109.png"
  alt="文件导航槽"
  loading="lazy"
  decoding="async"
/>
</p>
<p>顶部彩条直观展示了各个区间的大小分布，深蓝色区域表示已被成功识别出来的用户代码，黑色区域通常为未映射或空闲区。</p>
<h3 id="函数区functions-window">函数区（Functions Window）</h3>
<p>IDA 自动分析后会在左侧列出所有识别出的函数符号：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">start
</span></span><span class="line"><span class="ln">2</span><span class="cl">sub_80001E0
</span></span><span class="line"><span class="ln">3</span><span class="cl">sub_80001F4
</span></span><span class="line"><span class="ln">4</span><span class="cl">sub_80001F6
</span></span><span class="line"><span class="ln">5</span><span class="cl">sub_80001F8
</span></span><span class="line"><span class="ln">6</span><span class="cl">sub_80001FA
</span></span><span class="line"><span class="ln">7</span><span class="cl">sub_80001FC
</span></span><span class="line"><span class="ln">8</span><span class="cl">...
</span></span></code></pre></div><p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004000151556.png"
  alt="函数窗口"
  loading="lazy"
  decoding="async"
/>
</p>
<p>向右拖拽窗口可以展开更多列，双击函数名可快速跳转到对应代码：</p>
<ul>
<li><strong>段 (Segment)</strong>：函数所在内存段</li>
<li><strong>起始 (Start)</strong>：入口物理/虚拟地址（十六进制）</li>
<li><strong>长度 (Length)</strong>：函数字节大小</li>
<li><strong>局部 (Locals)</strong>：局部变量占用的栈空间</li>
<li><strong>参数 (Arguments)</strong>：参数占用的栈空间</li>
</ul>
<p>最后一列的标志位字符含义：</p>
<table>
	<thead>
			<tr>
					<th style="text-align: center">标志</th>
					<th style="text-align: left">含义</th>
					<th style="text-align: left">说明</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: center"><strong><code>R</code></strong></td>
					<td style="text-align: left">返回函数</td>
					<td style="text-align: left">函数具备正常的返回点（执行返回调用者）</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>F</code></strong></td>
					<td style="text-align: left">远函数</td>
					<td style="text-align: left">具备跨段调用属性</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>L</code></strong></td>
					<td style="text-align: left">库函数</td>
					<td style="text-align: left">命中了已知的标准库/运行时签名（FLIRT 库）</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>S</code></strong></td>
					<td style="text-align: left">静态函数</td>
					<td style="text-align: left">局部静态作用域函数</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>M</code></strong></td>
					<td style="text-align: left">终结函数</td>
					<td style="text-align: left">不返回调用者的函数（如进入死循环或中断终结）</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>O</code></strong></td>
					<td style="text-align: left">外联代码</td>
					<td style="text-align: left">编译器优化提取的公共代码块</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>B</code></strong></td>
					<td style="text-align: left">基于栈帧</td>
					<td style="text-align: left">使用标准栈帧指针（FP/BP），IDA 会自动将偏移转换为局部变量</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>T</code></strong></td>
					<td style="text-align: left">具备类型</td>
					<td style="text-align: left">函数已具备明确的原型类型签名信息</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>=</code></strong></td>
					<td style="text-align: left">帧指针稳定</td>
					<td style="text-align: left">帧指针等于初始堆栈指针</td>
			</tr>
			<tr>
					<td style="text-align: center"><strong><code>X</code></strong></td>
					<td style="text-align: left">异常处理</td>
					<td style="text-align: left">包含异常捕获（Catch 块）或回溯清理代码</td>
			</tr>
	</tbody>
</table>
<h3 id="命令输入区与主视图">命令输入区与主视图</h3>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004000835699.png"
  alt="命令输入区"
  loading="lazy"
  decoding="async"
/>
</p>
<p>底部为 Python / IDC 命令行与输出日志窗口。主工作区包含两个核心视图：</p>
<ul>
<li><strong>十六进制视图</strong>：查看原始十六进制字节；</li>
<li><strong>IDA 视图</strong>：交互式汇编窗口，按住 <code>Ctrl</code> 滚动鼠标滚轮可以自由缩放控制流图。</li>
</ul>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004001141700.png"
  alt="十六进制视图与汇编视图"
  loading="lazy"
  decoding="async"
/>
</p>
<hr>
<h2 id="配置-sram-内存段">配置 SRAM 内存段</h2>
<p>由于单片机裸机固件没有操作系统的虚拟内存管理，如果不手动定义 RAM 和外设区间，IDA 的数据流分析引擎在反编译时就无法识别全局变量和外设寄存器的读写，导致代码中出现大量未定义的裸指针。</p>
<p>按快捷键 <strong><code>Shift + F7</code></strong> 打开段管理界面（Segments），按 <strong><code>Insert</code></strong> 键新建段：</p>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004155449398.png"
  alt="新建段对话框"
  loading="lazy"
  decoding="async"
/>
</p>
<p>针对 <strong>STM32G431</strong>（32 KB SRAM，Flash 起始 <code>0x08000000</code>），需要手动添加以下两个段：</p>
<ol>
<li><strong>RAM 内存段（SRAM1）</strong>
<ul>
<li>起始地址：<code>0x20000000</code></li>
<li>结束地址：<code>0x20008000</code>（大小 32 KB）</li>
<li>属性：32 位可读可写数据段（<code>READ | WRITE</code>）</li>
</ul>
</li>
<li><strong>PERIPH 外设寄存器段</strong>
<ul>
<li>起始地址：<code>0x40000000</code></li>
<li>结束地址：<code>0x50040000</code>（覆盖 APB1/APB2/AHB1/AHB2 外设寄存器，包括 GPIO、TIM、ADC、CORDIC 等）</li>
<li>属性：32 位可读可写数据段（<code>READ | WRITE</code>）</li>
</ul>
</li>
</ol>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004155619064.png"
  alt="配置完成后的内存段列表"
  loading="lazy"
  decoding="async"
/>
</p>
<hr>
<h2 id="导入-svd-外设描述文件">导入 SVD 外设描述文件</h2>
<p>虽然建立了外设段，但寄存器在代码里依然是生硬的绝对物理地址。导入 MCU 厂商提供的 <strong>SVD（System View Description）</strong> 文件后，IDA 就能直接把地址解析成可读的外设结构体与寄存器名（如 <code>GPIOA</code>、<code>RCC</code>、<code>USART</code>、<code>TIM</code> 等）。</p>
<p>IDA 9.4 内置了 SVD 导入功能：</p>
<ul>
<li>菜单路径：<strong>编辑 
<span class="math-inline">\(\rightarrow\)</span>

 插件 
<span class="math-inline">\(\rightarrow\)</span>

 SVD文件管理</strong></li>
<li>快捷键：<strong><code>Ctrl + Shift + F11</code></strong></li>
</ul>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004160441258.png"
  alt="SVD 插件管理界面"
  loading="lazy"
  decoding="async"
/>
</p>
<p>选择对应芯片的 SVD 文件。已安装 Keil MDK 的环境可以直接从 DFP 芯片包中获取：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">E:\Keil_v5\Keil\STM32G4xx_DFP\1.1.0\CMSIS\SVD\STM32G431xx.svd
</span></span></code></pre></div><p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004193829166.png"
  alt="导入 SVD 成功"
  loading="lazy"
  decoding="async"
/>
</p>
<p>导入后，IDA 会自动生成外设寄存器结构体映射。</p>
<hr>
<h2 id="反编译伪-c-代码">反编译伪 C 代码</h2>
<ol>
<li>按 <strong><code>G</code></strong>（Jump to address），在弹框中输入目标函数地址（例如分析出的主函数入口 <code>0x08015660</code>），按回车跳转；</li>
<li>直接按键盘顶部的 <strong><code>F5</code></strong> 键，重新反编译。</li>
</ol>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004194725749.png"
  alt="F5 反编译伪代码效果"
  loading="lazy"
  decoding="async"
/>
</p>
<p>有了前面的 SRAM 段和 SVD 外设映射，反编译出来的伪代码不仅变量逻辑清晰，外设操作也直接呈现为具名的寄存器访问，极大降低了阅读成本。</p>
<hr>
<h2 id="ai-协作官方-ida-mcp-上手">AI 协作：官方 IDA MCP 上手</h2>
<p>2026 年 10 月，Hex-Rays 官方推出了 <strong>IDA MCP Server</strong>（<a href="https://github.com/HexRaysSA/ida-mcp">GitHub 官方仓库</a>），支持 IDA 9.4+，同时支持 GUI 插件联动与 Headless（无头）分析。</p>
<h3 id="环境依赖">环境依赖</h3>
<table>
	<thead>
			<tr>
					<th style="text-align: left">依赖项</th>
					<th style="text-align: left">官方要求</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>IDA 版本</strong></td>
					<td style="text-align: left">IDA 9.4 或更高版本</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Python</strong></td>
					<td style="text-align: left">Python 3.11 或更高版本</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>包管理</strong></td>
					<td style="text-align: left"><code>uv</code></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>版本管理</strong></td>
					<td style="text-align: left"><code>git</code></td>
			</tr>
	</tbody>
</table>
<h3 id="运作机制与架构">运作机制与架构</h3>
<p>官方 IDA MCP 基于 <strong>IDA Nexus</strong> 架构设计，支持两种运行模式：</p>
<ol>
<li><strong>GUI 联动模式</strong>：在 IDA 中加载 GUI 插件。当我们在 IDA 界面中分析固件时，MCP Server 能实时捕获当前打开的数据库，AI 助手可直接获取反汇编与反编译上下文。</li>
<li><strong>Headless（无头/独立）模式</strong>：直接调用底层的 <code>idalib</code> 在后台静默解析并提供分析，完全不需要启动 IDA 的图形界面。</li>
</ol>
<h3 id="安装与配置">安装与配置</h3>
<h4 id="步骤-1安装插件组件">步骤 1：安装插件组件</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">uvx ida-hcli mcp install
</span></span></code></pre></div><blockquote>
<p>命令会自动检测本机的 IDA 9.4 路径，并将 <code>ida-mcp</code> 部署到插件目录。也可以直接指定仓库安装：<code>uvx ida-hcli plugin install ida-mcp@https://github.com/HexRaysSA/ida-mcp</code>。</p>
</blockquote>
<h4 id="步骤-2配置客户端">步骤 2：配置客户端</h4>
<p><strong>配置 Claude Desktop</strong>（在 <code>%APPDATA%\Claude\claude_desktop_config.json</code> 中配置）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nt">&#34;mcpServers&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="nt">&#34;ida&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">      <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;uvx&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">      <span class="nt">&#34;args&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;--exclude-newer=1s&#34;</span><span class="p">,</span> <span class="s2">&#34;ida-mcp&#34;</span><span class="p">,</span> <span class="s2">&#34;stdio&#34;</span><span class="p">,</span> <span class="s2">&#34;--agent=claude-desktop&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>配置 Claude Code CLI</strong>：</p>
<p>直接通过官方插件市场安装：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">claude plugin marketplace add HexRaysSA/claude-marketplace
</span></span><span class="line"><span class="ln">2</span><span class="cl">claude plugin install ida-mcp@HexRaysSA
</span></span></code></pre></div><p>安装完成后，在终端即可直接与 IDA MCP 通信：</p>
<p><img
  src="https://kyro-qu.github.io/blog-images-1/posts/ida-pro-9-4-guide/image-20261004151624800.png"
  alt="Claude Code 终端中集成 IDA MCP"
  loading="lazy"
  decoding="async"
/>
</p>
<hr>
<h2 id="总结ai-时代的逆向新体验">总结：AI 时代的逆向新体验</h2>
<p>以前搞单片机逆向，必须一步步守在 IDA 界面前：手动加载文件、配架构、建 RAM 段、导 SVD，然后一个个函数点过去看汇编和伪代码。</p>
<p>而在 AI 时代，随着 IDA 9.4 官方引入 MCP 以及对 <code>idalib</code> 无头模式的原生支持，未来的逆向工作流有了完全不同的可能：</p>
<p><strong>你甚至不需要每次都打开沉重的 IDA 图形界面，而是直接把 Claude 当作全自动逆向助手。在终端里打开 Claude Code CLI，输入一句：</strong></p>
<blockquote>
<p><em>“帮我分析这个固件的主逻辑，找出按键扫描和 UID 加密算法对应的函数。”</em></p>
</blockquote>
<p>Claude 就能通过 IDA MCP 在后台自动调用 <code>idalib</code> 加载固件、跑反汇编、沿着控制流交叉引用追查，并直接在命令行里把算法还原和拆解结果交代得清清楚楚。从“纯手动点选分析”到“命令行驱动的全自动逆向”，这或许才是 IDA 9.4 带来的最直观的体验升级。</p>
]]></content:encoded></item></channel></rss>