注释有助于以一种更高级的方式描述汇编语言指令序列
IDA 提供了几种不同类型的注释,每种注释适用于不同的目的
使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行代码添加注释
这是一个 scanf() 函数
某一行分号之后的内容都是注释
常规注释
常规注释位于现有汇编代码行的尾部
右击反汇编窗口右边空白的地方
选择 Enter comment,可以打开“Enter comment”对话框
或者使用快捷键“:”
输入一行注释
默认情况下,常规注释以蓝色显示
如果输入了多行注释,常规注释将跨越多行
每一行注释将排到反汇编窗口的右侧,并同样以分号开头,且与最第一个分号对齐
要编辑或删除一段注释,需要打开该注释的对话框“Enter comment”,进行编辑或删除
在分析阶段,IDA 插入常规注释说明为调用函数而压入的参数
只有当 IDA 拥有被调用函数的参数名称或类型信息时,才会使用常规注释
可重复注释
可重复注释一旦输入,将会自动出现在反汇编窗口中的许多位置
可重复注释的颜色也是蓝色的
如果一个程序位置引用了另一个包含可重复注释的位置,则该注释会在第一个位置回显
默认情况下,回显的注释以灰色文本显示
可重复注释的快捷键为分号“;”
右键反汇编窗口右边空白的地方
选择 Enter repeatable comment,也能进行注释
输入注释的内容,hello
点击 OK
如果在一个显示可重复注释的位置添加一段常规注释,则可重复注释将被常规注释覆盖,该位置将仅显示常规注释
任何时候,如果 IDA 自动创建一个字符串变量,字符串变量所在的位置都将添加一段虚拟的可重复注释
这种称为虚拟注释,因为用户无法编辑这段注释
虚拟注释的内容被设置为字符串变量的内容,并且会在整个数据库中显示,就像是一段可重复注释一样
任何引用字符串变量的位置都将以重复注释的形式显示字符串变量的内容
这类注释是因为引用了字符串变量才显示的
在前注释和在后注释
在前注释和在后注释是出现在指定的反汇编行之前或之后的全行注释,它们是 IDA 中仅有的不以分号为前缀的注释
通过将与某个行相关的地址与该行之后或之前的指令进行比较,即可区分“在前”注释与“在后”注释
函数注释
通过函数注释,可以为函数的反汇编代码清单顶部显示的注释分组
上图就为函数注释,其中也包含函数原型
要输入函数注释,首先应突出显示函数顶部的函数名称,然后再输入一段常规注释或可重复注释
可重复函数注释将在调用该函数的任何位置回显