首页
社区
课程
招聘
[IDA使用技巧]#009: 重新分析
发表于: 2024-3-14 11:26 3377

[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 内核进行以下操作:

  1. 删除当前地址的交叉引用;
  2. 让处理器模块重新分析该指令;通常情况下,这会导致(重新)创建交叉引用,包括流向下一条指令的交叉引用(除非当前指令停止了代码流)。

重新分析函数

当函数的任何参数发生变化时(例如需要重新创建堆栈变量),函数的所有指令都会被重新分析。因此,以下按键顺序会导致重新分析整个函数: Alt + P(编辑函数)、Enter(确认对话框)。

对更大范围的指令进行重新分析

为此,我们可以使用 "post on selection"一文中介绍的技巧。

  1. 转到范围的起点;
  2. 按 Alt-L(开始选择);
  3. 转到选择结束处;
  4. 按 C(转换为代码)。在第一个提示中选择 "Analyze[分析]",在第二个提示中选择 "No[否]"。

对整个数据库进行重新分析

如果您需要重新分析所有内容,但又不想麻烦地选择所有代码,有一个专门的命令可以通过两种方式调用:

  1. Menu Options >  General…, Analysis Tab, Reanalyze program button;

    菜单选项 > 常规...,分析选项卡,重新分析程序按钮;

  2. Right-click the status bar at the bottom of IDA’s window, Reanalyze program

    右键单击 IDA 窗口底部的状态栏,重新分析程序




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2948
活跃值: (30846)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2024-3-18 09:35
1
游客
登录 | 注册 方可回帖
返回
//