"IDA" 这个词中的 “I” 是 interactive (交互)的缩写,IDA 中最常用的交互操作是给反汇编/反编译结果添加注释,IDA 中有多种不同类型的注释。
常规注释
这些注释被放置在反汇编行的末尾,由注释字符(分号、散列、at 符号等)分隔。
注释分隔符根据不同的汇编语言来确定。
添加常规注释的快捷键是 “:”
重复(Repeatable)注释
重复注释与常规注释基本上是一样的,不同的是,重复注释会在每一个引用注释位置的地方自动添加重复注释。
例如,给一个全局变量“TOC”添加重复注释,所有引用“TOC”变量的位置都会出现相同的注释。
快捷键 “;”。
函数注释
如果在函数的第一条指令添加重复注释,这种注释会被视作函数注释。这种注释在函数头部信息之前输出,由于函数注释是重复注释,每一个调用该函数的位置都会输出同样的注释。它比函数名更适合描述函数的功能。
快捷键 “;”,在函数第一条指令位置!
前后注释
这些在当前地址之前或之后作为单独的文本行打印,移动所有其他列表行。它们适用于扩展解释、ASCII 艺术和其他独立文本。与常规注释不同,不会自动添加汇编注释字符。
快捷键: Ins,shift+Ins(I 和 Shift-I MacOS)
琐事:通常添加在列表开头的包含文件详细信息的注释是前后注释,因此您可以使用 Ins 对其进行编辑。
伪代码注释
在反编译器伪代码中,您还可以使用快捷方式 /(斜杠)添加缩进注释,并使用 Ins(Mac 上的 I)添加块注释。它们与反汇编注释分开存储,但函数注释与反汇编中的注释共享。
自动注释
在某些情况下,IDA 本身可以添加反汇编注释。举几个例子:
开启 “Auto comments”
开启后,效果如下
默认情况下,Demangled 符号(如C++的原始符号)以自动注释的形式显示,如果要使用原始符号,在 Options > Demangled names 中设置。
字符串常量的注释与重复注释类似,它在每一个引用位置显示字符串的内容。
原文始发于微信公众号(二进制磨剑):IDA 技巧(14) 你真的会用 IDA 注释吗?
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论