注释有助于以一种更高级的方式描述汇编语言指令序列

IDA 提供了几种不同类型的注释,每种注释适用于不同的目的

使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行代码添加注释

这是一个 scanf() 函数

某一行分号之后的内容都是注释

常规注释

常规注释位于现有汇编代码行的尾部

右击反汇编窗口右边空白的地方

选择 Enter comment,可以打开“Enter comment”对话框

或者使用快捷键“:”

输入一行注释

默认情况下,常规注释以蓝色显示

如果输入了多行注释,常规注释将跨越多行

每一行注释将排到反汇编窗口的右侧,并同样以分号开头,且与最第一个分号对齐

要编辑或删除一段注释,需要打开该注释的对话框“Enter comment”,进行编辑或删除

在分析阶段,IDA 插入常规注释说明为调用函数而压入的参数

只有当 IDA 拥有被调用函数的参数名称或类型信息时,才会使用常规注释

可重复注释

可重复注释一旦输入,将会自动出现在反汇编窗口中的许多位置

可重复注释的颜色也是蓝色的

如果一个程序位置引用了另一个包含可重复注释的位置,则该注释会在第一个位置回显

默认情况下,回显的注释以灰色文本显示

可重复注释的快捷键为分号“;”

右键反汇编窗口右边空白的地方

选择 Enter repeatable comment,也能进行注释

输入注释的内容,hello

点击 OK

如果在一个显示可重复注释的位置添加一段常规注释,则可重复注释将被常规注释覆盖,该位置将仅显示常规注释

任何时候,如果 IDA 自动创建一个字符串变量,字符串变量所在的位置都将添加一段虚拟的可重复注释

这种称为虚拟注释,因为用户无法编辑这段注释

虚拟注释的内容被设置为字符串变量的内容,并且会在整个数据库中显示,就像是一段可重复注释一样

任何引用字符串变量的位置都将以重复注释的形式显示字符串变量的内容

这类注释是因为引用了字符串变量才显示的

在前注释和在后注释

在前注释和在后注释是出现在指定的反汇编行之前或之后的全行注释,它们是 IDA 中仅有的不以分号为前缀的注释

通过将与某个行相关的地址与该行之后或之前的指令进行比较,即可区分“在前”注释与“在后”注释

函数注释

通过函数注释,可以为函数的反汇编代码清单顶部显示的注释分组

上图就为函数注释,其中也包含函数原型

要输入函数注释,首先应突出显示函数顶部的函数名称,然后再输入一段常规注释或可重复注释

可重复函数注释将在调用该函数的任何位置回显

IDA Pro 权威指南学习笔记(十二) - IDA 中的注释的更多相关文章

  1. IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口

    默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...

  2. IDA Pro 权威指南学习笔记(十四) - 操纵函数

    IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围 ...

  3. IDA Pro 权威指南学习笔记(十) - 栈帧

    栈帧(stack frame)是在程序的运行时栈中分配的内存块,用于特定的函数调用 如果一个函数没有执行则不需要内存,当函数被调用时就需要用到内存 1.传给函数的参数的值需要存储到函数能够找到它们的位 ...

  4. IDA Pro 权威指南学习笔记(八) - 基本 IDA 导航

    导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的 ...

  5. IDA Pro 权威指南学习笔记(一) - 启动 IDA

    启动 IDA 启动 IDA,有一个欢迎界面 之后有一个对话框 选择 New 将启动一个对话框来选择将要分析的文件 选择 Go 将使 IDA 打开一个空白的工作区 如果要选择分析的文件,可以直接拖到 I ...

  6. IDA Pro权威指南学习笔记(一)

    一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前 ...

  7. IDA Pro 权威指南学习笔记(二) - IDA 数据库文件

    生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 . ...

  8. IDA Pro 权威指南学习笔记(十三) - 基本代码转换

    IDA提供的代码转换包括: 1.将数据转换为代码 2.将代码转换为数据 3.指定一个指令序列为函数 4.更改现有函数的起始或结束地址 5.更改指令操作数的显示格式 代码显示选项 通过 Options ...

  9. IDA Pro 权威指南学习笔记(五) - IDA 主要的数据显示窗口

    在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口.函数窗口和消息输出窗口 可以通过 View - ...

随机推荐

  1. Android程序员学WEB前端(7)-CSS(2)-伪类字体文本背景边框-Sublime

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76618373 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 伪类: <!DOC ...

  2. EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)

    本文转自EasyDarwin开源团队成员Sword的博客:http://blog.csdn.net/swordtwelve EasyPlayer(Windows) v2.0.17.0709版本又更新发 ...

  3. 去除inline-block元素间间距的N种方法(转)

    一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: <input /> <input type="su ...

  4. BZOJ3680 吊打XXX 【模拟退火】

    Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞 ...

  5. 字符串处理scanf("%d%*c",&n);

    "*"表示该输入项读入后不赋予任何变量,即跳过该输入值.这在减小内存开支上面还是有一点用处的,不需要的字符直接跳过,免得申请没用的变量空间 你的例子中的%*c的作用是读入'\n', ...

  6. php 中的 Output Control 函数

    先看一个简单的例子 <?php ob_start(); echo 111; ob_clean(); echo 222; ob_start()开启ob缓存,然后111放进了ob缓存, 再调用ob_ ...

  7. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  8. PHP 读取和导出 CSV文件

    PHP 读取和导出 CSV文件,速度比phpexcel快80%,而phpexcel 占内存,在数据大的情况下,5万条只需几秒不到,几乎感觉不出来 如果遇到数字是科学计算法,可以在前面加一个 ' 单引号 ...

  9. python面试题(十)

    Python中基本数据结构的操作 元组 列表 字典 集合 定义 新增 更改 删除 2.请尽可能列举python列表的成员方法,并给出一下列表操作的答案: (1)a=[1, 2, 3, 4, 5], a ...

  10. 后缀数组模板/LCP模板

    //后缀数组模板,MANX为数组的大小 //支持的操作有计算后缀数组(sa数组), 计算相邻两元素的最长公共前缀(height数组),使用get_height(); //计算两个后缀a, 和b的最长公 ...