飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 332|回复: 0

[其它] [IDA使用技巧]#009: 重新分析

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2024-3-14 11:35:55 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2024-3-14 11:46 编辑

    翻译:梦幻的彼岸
    例如,在使用 IDA 时,有时您可能需要重新分析数据库的某些部分:
    • 更改外部函数原型后(尤其是调用约定、清除字节数或 "不返回 "标志);
    • 修复错误检测到的 ARM/Thumb 或 MIPS32/MIPS16 区域后;
    • 更改全局处理器选项后(如在 MIPS 中设置$gp值或在 PPC 中设置 TOC);
    • 其他情况(分析参数等)
    重新分析个别指令
    要重新分析一条指令,请将光标放在该指令上,然后按 C(转换为代码)。即使该指令已经是代码,这一操作也不是无用的:它要求 IDA 内核进行以下操作:
    • 删除当前地址的交叉引用;
    • 让处理器模块重新分析该指令;通常情况下,这会导致(重新)创建交叉引用,包括流向下一条指令的交叉引用(除非当前指令停止了代码流)。
    重新分析函数
    当函数的任何参数发生变化时(例如需要重新创建堆栈变量),函数的所有指令都会被重新分析。因此,以下按键顺序会导致重新分析整个函数: Alt + P(编辑函数)、Enter(确认对话框)。
    对更大范围的指令进行重新分析
    为此,我们可以使用 "post on selection"一文中介绍的技巧。
    • 转到范围的起点;
    • 按 Alt-L(开始选择);
    • 转到选择结束处;
    • 按 C(转换为代码)。在第一个提示中选择 "Analyze[分析]",在第二个提示中选择 "No[否]"。
      1.jpg
      2.jpg

    对整个数据库进行重新分析
    如果您需要重新分析所有内容,但又不想麻烦地选择所有代码,有一个专门的命令可以通过两种方式调用:
    • Menu Options >  General…, Analysis Tab, Reanalyze program button;
      菜单选项 > 常规...,分析选项卡,重新分析程序按钮;
      3.jpg
    • Right-click the status bar at the bottom of IDA’s window, Reanalyze program
      右键单击 IDA 窗口底部的状态栏,重新分析程序
      4.jpg


    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表