-
-
[IDA使用技巧]#009: 重新分析
-
发表于:
2024-3-14 11:26
3377
-
翻译:梦幻的彼岸
原文地址:https://hex-rays.com/blog/igor-tip-of-the-week-09-reanalysis/
例如,在使用 IDA 时,有时您可能需要重新分析数据库的某些部分:
- 更改外部函数原型后(尤其是调用约定、清除字节数或 "不返回 "标志);
- 修复错误检测到的 ARM/Thumb 或 MIPS32/MIPS16 区域后;
- 更改全局处理器选项后(如在 MIPS 中设置
$gp
值或在 PPC 中设置 TOC);
- 其他情况(分析参数等)
重新分析个别指令
要重新分析一条指令,请将光标放在该指令上,然后按 C(转换为代码)。即使该指令已经是代码,这一操作也不是无用的:它要求 IDA 内核进行以下操作:
- 删除当前地址的交叉引用;
- 让处理器模块重新分析该指令;通常情况下,这会导致(重新)创建交叉引用,包括流向下一条指令的交叉引用(除非当前指令停止了代码流)。
重新分析函数
当函数的任何参数发生变化时(例如需要重新创建堆栈变量),函数的所有指令都会被重新分析。因此,以下按键顺序会导致重新分析整个函数: Alt + P(编辑函数)、Enter(确认对话框)。
对更大范围的指令进行重新分析
为此,我们可以使用 "post on selection"一文中介绍的技巧。
- 转到范围的起点;
- 按 Alt-L(开始选择);
- 转到选择结束处;
- 按 C(转换为代码)。在第一个提示中选择 "Analyze[分析]",在第二个提示中选择 "No[否]"。
对整个数据库进行重新分析
如果您需要重新分析所有内容,但又不想麻烦地选择所有代码,有一个专门的命令可以通过两种方式调用:
- Menu Options > General…, Analysis Tab, Reanalyze program button;
菜单选项 > 常规...,分析选项卡,重新分析程序按钮;
- Right-click the status bar at the bottom of IDA’s window, Reanalyze program
右键单击 IDA 窗口底部的状态栏,重新分析程序
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)