IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口
默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开
Strings 窗口(Strings)
Strings 窗口中显示的是从二进制文件中提取出的一组字符串,以及每个字符串所在的地址
双击 Strings 窗口中的任何字符串,反汇编窗口和十六进制窗口将跳转到该字符串所在的地址
将 Strings 窗口与交叉引用相结合,可迅速定位感兴趣的字符串,并追踪到程序中任何引用该字符串的位置
例如,看到 SOFTWARE\Microsoft\Windows\CurrentVersion\Run 这个字符串,并想知道应用程序为什么会引用这个特殊的 Windows 注册表项
每次打开 Strings 窗口,IDA 都会扫描或重新扫描整个数据库,查找其中的字符串
扫描字符串的操作遵照 Strings 窗口的设置来完成,右击该窗口,在出现的菜单中选择 Setup,即可开始设置
Setup Strings 窗口用于指定 IDA 应扫描的字符串类型
IDA 默认扫描的字符串类型为至少包含 5 个字符的 C 风格、以 null 结尾的 7 位 ASCII 字符串
每次单击 OK 按钮关闭 Setup Strings 窗口后,IDA 都会根据新的设置重新扫描数据库,查找相应的字符串
Display only defined strings(仅显示已定义的字符串),这个选项使 Strings 窗口仅显示 IDA 自动创建或用户手动创建的已命名字符串数据项
在选中这个选项的同时禁用所有其他选项,IDA 将不会自动扫描其他类型的字符串
Ignore instructions/data definitions(忽略指令/数据定义),这个选项会使 IDA 扫描指令和现有数据定义中的字符串
使用这个选项,可以让 IDA 扫描二进制代码中错误地转换成指令的字符串,或扫描数据中非字符串格式(如字节数组或整数)的字符串
这个选项还会导致 IDA 生成许多垃圾字符串,即那些由 5 个或更多 ASCII 字符构成的字符串(无论其是否合法)
使用这个选项的效果类似于使用 strings -a 命令
Names 窗口(Names)
Names 窗口简要列举了一个二进制文件的所有全局名称
名称是指对一个程序虚拟地址的符号描述
名称可以按字母排序,也可以按虚拟地址排序(升序或降序)
双击 Names 窗口中的名称,可跳转到显示该名称的反汇编视图
Names 窗口中显示的名称采用了颜色和字母编码:
f 为常规函数,IDA 认为这些函数不属于库函数
i 为导入的名称,通常为共享库导入的函数名称
它与库函数的区别在于:导入的名称没有代码,而库函数的主体将在反汇编代码清单中显示
D 为数据,已命名数据的位置通常表示全局变量
C 为命名代码,这些是已命名的程序指令位置,IDA 认为它们不属于任何函数
当 IDA 在程序的符号表中找到一个名称,但没发现对程序位置的任何调用时,就会出现这种情况
A 为字符串数据,这是一个被引用的数据位置,其中包含的一串字符符合 IDA 的某种已知的字符串数据类型,如以 '\0' 字节结束的 ASCII 字符串
在对一个程序进行反汇编的过程中,IDA 会为所有直接作为代码(分支或调用目标)或数据(读取的、写入的或使用的地址)引用的位置生成名称
如果一个位置已在程序符号表中命名,IDA 将采用该名称
如果符号表中某一程序位置没有名称,则 IDA 会生成一个默认的名称,以在反汇编过程中使用
在 IDA 给某个位置命名时,它会使用该位置的虚拟地址和一个表示该位置的类型的前缀进行命名
将虚拟地址合并到生成的名称中,可确保生成的所有名称的唯一性,因为没有两个位置的虚拟地址是相同的,这种自动生成的名称并不在 Names 窗口中显示
用于自动生成名称的一些常用前缀:
sub_xxxxxx:地址 xxxxxx 处的子例程
loc_xxxxxx:地址 xxxxxx 处的一个指令
byte_xxxxxx:位置 xxxxxx 处的 8 位数据
word_xxxxxx:位置 xxxxxx 处的 16 位数据
dword_xxxxxx:位置 xxxxxx 处的 32 位数据
unk_xxxxxx:位置 xxxxxx 处的大小未知的数据
段窗口(Segments)
段窗口显示的是在二进制文件中出现的段的简要列表
在讨论二进制文件的结构时,IDA 术语段(segment)常称为节(section)
段窗口中显示的信息包括段名称、起始和结束地址以及许可标志
起始和结束地址代表程序段在运行时对应的虚拟地址范围
双击段窗口中的任何条目,IDA 将跳转到反汇编窗口中该段的起始位置
右击一个条目,IDA 将显示一个上下文菜单,你可以选择添加新段、删除现有段、或者编辑现有段的属性
段窗口所对应的命令行工具包括 objdump (-h) 、 readelf (-s) 和 dumpbin (/HEADERS)
签名窗口(Signatures)
签名窗口显示的是 IDA 对打开的二进制文件所使用的签名
签名用于识别由编译器生成的常用启动顺序,以确定可能已被用来构建给定二进制文件的编译器
签名还可用于将函数划归为由编译器插入的已知库函数,或者因为静态链接而添加到二进制文件中的函数
IDA 对该二进制文件应用了 vcseh 签名(来自<IDADIR>/sigs目录),并在这个过程中将 0 个函数识别为库函数
至少在两种情况下,需要知道如何对二进制文件应用其他签名:
第一种情况:IDA 无法识别用于构建二进制文件的编译器,因而无法选择所需的相应签名
这时,需要根据自己的初步分析,确认 IDA 应尝试使用的签名,并迫使 IDA 使用一个或几个签名
第二种情况:IDA 中没有针对某些库的现成签名,这时需要自己为这些库创建你自己的签名
类型库窗口(Type libraries)
类型库保存 IDA 积累的一些信息,即 IDA 从最常用的编译器的头文件中搜集到的有关预定义数据类型和函数原型的信息
通过处理头文件,IDA 可确定常用库函数所需的数据类型,并为反汇编代码提供相应的注释
IDA 还可从这些头文件中了解复杂数据结构的大小和布局所有这些信息都收集在 TIL 文件(<IDADIR/til 目录>)中,并可在任何时候应用于分析的二进制文件
与应用签名时一样,在选择加载一组适当的 TIL 文件之前,IDA 必须首先确定一个程序所使用的库
要请求 IDA 加载其他类型库,可以在类型库窗口中按下 INSERT 键,或右击窗口并在出现的菜单中选择 Load Type Library(加载类型库)
函数调用窗口(Function calls)
如果 Y 函数直接调用 X 函数,或者 X 函数直接调用 Y 函数,则称 Y 函数是 X 函数的近邻
打开函数调用窗口时,IDA 会确定光标所在位置的函数的“近邻”
函数 ___pow5mult_D2A 被 ___gdtoa 从 3 个不同的位置调用,被 ___strtodg 从 2 个不同的位置调用,而这个函数又调用了另外 9 个函数
双击函数调用窗口中的任何一行,IDA 将跳转到反汇编窗口中对应的调用或被调用函数(即调用方或被调用方)
IDA 交叉引用(xrefs)是用于生成函数调用窗口的机制
问题窗口(Problems)
IDA 在问题窗口中显示它在反汇编二进制文件时遇到的困难,以及它如何处理这些困难
每个问题都注明了问题发生的地址、问题的类型以及问题所在位置的指令
在上图中,有一个 NODISASM 问题和一个 DECISION 问题
DECISION 问题通常表示 IDA 决定将一个地址上的字节作为指令而非数据进行反汇编,即使这个地址在递归下降指令遍历过程中从未被引用也是如此
IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口的更多相关文章
- IDA Pro 权威指南学习笔记(八) - 基本 IDA 导航
导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的 ...
- IDA Pro 权威指南学习笔记(十二) - IDA 中的注释
注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行 ...
- IDA Pro 权威指南学习笔记(一) - 启动 IDA
启动 IDA 启动 IDA,有一个欢迎界面 之后有一个对话框 选择 New 将启动一个对话框来选择将要分析的文件 选择 Go 将使 IDA 打开一个空白的工作区 如果要选择分析的文件,可以直接拖到 I ...
- IDA Pro权威指南学习笔记(一)
一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前 ...
- IDA Pro 权威指南学习笔记(十四) - 操纵函数
IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围 ...
- IDA Pro 权威指南学习笔记(五) - IDA 主要的数据显示窗口
在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口.函数窗口和消息输出窗口 可以通过 View - ...
- IDA Pro 权威指南学习笔记(四) - IDA 用户界面的基本规则
基本规则: IDA 不提供撤销功能 如果由于不小心按下某个键,导致数据库文件发生意外,这时需要将显示窗口恢复到以前的状态 几乎所有的操作都有其对应的菜单项.热键和工具栏按钮 IDA 的工具栏高度可配置 ...
- IDA Pro 权威指南学习笔记(三) - IDA 桌面简介
IDA 的默认桌面如下图 工具栏区域(1)包含与 IDA 的常用操作对应的工具,可以使用 View -> Toolbar 显示或隐藏工具栏 可以使用 View -> Toolbars -& ...
- IDA Pro 权威指南学习笔记(十三) - 基本代码转换
IDA提供的代码转换包括: 1.将数据转换为代码 2.将代码转换为数据 3.指定一个指令序列为函数 4.更改现有函数的起始或结束地址 5.更改指令操作数的显示格式 代码显示选项 通过 Options ...
随机推荐
- jenkins的Master/Slave模式
一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机).执行Master分配的任务,并返回任务 ...
- ASP.NET Core 简单引入教程
0.简介 开源.跨平台 1.环境安装 参考官方教程 Core 官方文档 2.向世界问个好 sheel/cmd 下: dotnet --help // 查看帮助 dotnet new * / ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 找到旋转后有序数组中的最小值
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4032570.html 原题: Suppose a sorted array is ...
- 【zzulioj-2115】乘积最大(区间dp)
题目描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...
- vsftp中的local_umask和anon_umask
umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限umask = 022 时,新建的目录 权限是755,文件的权限是 644umask = 077 时,新建的目录 权限 ...
- [Scala]Scala学习笔记三 Map与Tuple
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...
- Arcgis for Js实现graphiclayer的空间查询
本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容很简单,代码如下: <!DOCTYPE html> <html> <head> & ...
- 前端之css样式01
选择器,css文本属性 CSS语法: 选择器 {属性1: 值1; 属性2: 值2} CSS放置的位置: 1. 直接写在标签里面,通过style属性来设置CSS样式 2. 在head标签里面通过styl ...
- 记录最近工作使用javascript对select[option]的操作
1: 数据库取值赋予select选项 $(function(){ $("input[name='state'][value='{$store.state}']").attr(&qu ...
- HihoCoder1325 : 平衡树·Treap(附STL版本)
平衡树·Treap 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,我发现我们以前讲过的两个数据结构特别相似. 小Hi:你说的是哪两个啊? 小Ho:就是二 ...