图形视图是 IDA GUI 中默认的反汇编表示形式,并且可能是大多数 IDA 用户每天使用的。然而,它有一些鲜为人知的功能,可以改善您的工作流程。
图形视图的组成
图形视图由基本块和基本块之间的边组成。
基本块是一个直线代码序列,除了入口和出口之外没有分支。
边表示基本块之间的控制流,其颜色根据控制流的类型而变化:
-
条件跳转/分支有两个出边:绿色表示已采用的分支,红色表示未采用的分支(即到达下一个地址); -
其他种类的边均为蓝色; -
图中向后移动的边(这通常意味着它们是循环的一部分)的宽度较厚。
键盘控制
尽管该图最适合鼠标,但您仍然可以使用键盘执行一些操作:
-
w
缩小,使整个图形适合可见窗口区域; -
1
缩放回 100%; -
Ctrl + Up
移动到父节点; -
Ctrl + Down
移动到子节点;(如果在任何一种情况下都有多个候选者,则会显示一个选择器)
鼠标控制
除了通常的点击之外,还可以进行一些不太明显的鼠标操作:
-
双击边可跳转到其另一侧,或将鼠标悬停在预览目标(源)节点; -
单击并拖动背景可向任意方向平移整个图; -
使用鼠标滚轮垂直(上/下)滚动图; -
Alt + 滚轮
水平滚动(左/右); -
Ctrl + 滚轮
放大缩小。
重新排列和分组节点
如有必要,您可以通过拖动某些节点的标题来移动它们。还可以通过拖动边的弯曲点来移动边。使用上下文菜单中的“Layout graph”返回到初始布局。
大图可以通过分组来简化:
-
通过按住 Ctrl 并单击多个节点的标题或单击并拖动选择框来选择多个节点。选定的节点将具有与其他节点不同的颜色(默认配色方案为青色); -
从上下文菜单中选择“Group nodes”,然后输入新节点的文本。IDA 将用新节点替换选定节点并重新排列图表; -
您可以根据需要多次重复该过程,包括对已经分组的节点进行分组; -
创建的组可以再次临时扩展或完全取消分组,返回到单独的节点。为此,请使用上下文菜单或组节点标题栏中的新图标。
分组化简之后就下面这样了
原文始发于微信公众号(二进制磨剑):IDA 技巧(23) IDA 图形视图
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论