十六进制窗口

IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用

默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字符

和在反汇编窗口中一样,用户也可以同时打开几个十六进制窗口

第一个十六进制窗口叫做 Hex View-A,第二个十六进制窗口叫做 Hex View-B,接下来的窗口叫做 Hex View-C,依次类推

默认情况下,第一个十六进制窗口会与第一个反汇编窗口同步

如果一个反汇编窗口与一个十六进制窗口同步,在一个窗口中滚动鼠标,另一个窗口也会滚动到相同的位置(同一个虚拟地址)

如果在反汇编窗口中选中一个项目,十六进制窗口中的对应字节也将突出显示

在反汇编窗口中,光标指向地址 0040E60D,这是一个 mov 指令,在十六进制窗口中,构成这个指令的全部 3 个字节均突出显示

右击十六进制窗口的任何位置,出现十六进制窗口的上下文菜单

使用这个菜单,可以指定与某个特殊的十六进制窗口同步的反汇编窗口(如果有的话)

如果取消选中同步选项,那么在滚动十六进制窗口时,将不会有任何反汇编窗口随之滚动

择 Edit 菜单项可将十六进制窗口转变为十六进制编辑器,完成编辑后,你必须提交或取消更改才能返回查看模式

可以使用 Data Format 菜单项选择各种显示格式,如 1、2、4、8 字节十六进制,带签名的十进制或不带签名的十进制整数及各种浮点格式

可以使用 Columns 菜单项更改显示的列数

使用 Text 选项打开或关闭文本块

如果十六进制窗口中显示的是问号,这表示 IDA 无法识别给定的虚拟地址范围内的值,如果程序中包含一个 bss 节,就会出现这种情况

通常,bss 节并不占用文件的空间,但加载器会扩展这一节,以适应程序的静态存储要求

bss 节由编译器创建,用于保存程序的所有未初始化的静态变量

既然没有为这些变量指定初始值,就没有必要在程序的文件镜像中为它们分配空间,只需在程序的一个头文件中注明它的大小

当程序执行时,加载器会为其分配所需的空间,并将整个数据块的初始值设为 0

导出窗口

导出窗口列出文件的入口点

这些入口点包括程序的执行入口点(在程序的文件头部分指定),以及任何由文件导出给其他文件使用的函数和变量

通常,用户可在共享库(如 Windows DLL 文件)中找到导出的函数

导出的项目按名称、虚拟地址和序数(如果可用)排列

共享库可能会使用导出序数,以方便用户通过序数而非名称访问函数

使用序数可以加快地址查询速度,并允许程序员隐藏函数的名称

Windows DLL 即使用导出序数

对于可执行文件,导出窗口中至少包含一个项目:程序的执行入口点,IDA 将这个入口点取名为 start

与许多其他 IDA 窗口一样,双击导出窗口中的一个条目,IDA 将会跳转到反汇编窗口中与该项目有关的地址

导出窗口提供与 objdump (-T) 、 readelf (-s) 和 dumpbin (/EXPORTS) 等命令行工具类似的功能

导入窗口

导入窗口的功能与导出窗口的功能正好相反

导入窗口列出由被分析的二进制文件导入的所有函数

只有在二进制文件使用共享库时,IDA 才需要用到导入窗口

静态链接的二进制文件不存在外部依赖关系,因此不需要导入其他内容

导入窗口中的每个条目列出一个导入项目(函数或数据)的名称,以及包含该项目的库的名称

由于被导入的函数的代码位于共享库中,窗口中每个条目列出的地址为相关导入表条目的虚拟地址

双击第一个条目,IDA 将跳转到反汇编窗口的 00412168 地址处

在十六进制窗口中,这个内存位置的内容显示为 ?? ?? ?? ??

因为 IDA 是一种静态分析工具,它无法获知程序在执行时会在这个内存位置输入什么地址

导入窗口还提供与 objdump (-T) 、 readelf (-s) 和 dumpbin (/IMPORTS) 等命令行工具类似的功能

导入窗口仅显示二进制文件想要动态加载器自动处理的符号,二进制文件选择使用 dlopen/dlsym 或 LoadLibrary/GetProcAddress 等机制自行加载的符号将不会在导入窗口中显示

结构体窗口

结构体窗口用于显示 IDA 决定在一个二进制文件中使用的任何复杂的数据结构(如 C 结构体和联合)的布局

在分析阶段,IDA 会查询它的函数类型签名扩展库,设法将函数的参数类型与程序使用的内存匹配起来

双击数据结构的名称,IDA 将展开该结构,这样你就可以查看该结构的详细布局,包括每个字段的名称和大小

结构体窗口的两个主要用途包括:

为标准数据结构的布局提供现成的参考;

提供一种方法,在发现程序使用的自定义数据结构时,帮助创建自己的、可用作内存布局模板的数据结构

枚举窗口

如果 IDA 检测到标准枚举数据类型(C  enum ),它将在枚举窗口中列出该数据类型

可以使用枚举来代替整数常量,提高反汇编代码的可读性

在枚举窗口中也可以定义自己的枚举类型,并将其用在经过反汇编的二进制代码中

IDA Pro 权威指南学习笔记(六) - 次要的 IDA 显示窗口的更多相关文章

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

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

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

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

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

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

  4. IDA Pro 权威指南学习笔记(四) - IDA 用户界面的基本规则

    基本规则: IDA 不提供撤销功能 如果由于不小心按下某个键,导致数据库文件发生意外,这时需要将显示窗口恢复到以前的状态 几乎所有的操作都有其对应的菜单项.热键和工具栏按钮 IDA 的工具栏高度可配置 ...

  5. IDA Pro 权威指南学习笔记(三) - IDA 桌面简介

    IDA 的默认桌面如下图 工具栏区域(1)包含与 IDA 的常用操作对应的工具,可以使用 View -> Toolbar 显示或隐藏工具栏 可以使用 View -> Toolbars -& ...

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

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

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

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

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

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

  9. IDA Pro 权威指南学习笔记(十二) - IDA 中的注释

    注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行 ...

随机推荐

  1. 用verilog来描述组合逻辑电路

    1,什么是组合逻辑电路? 逻辑电路在任何时刻产生的稳定的输出信号仅仅取决于该时刻的输入信号,而与过去的输入信号无关,即与输入信号作用前的状态无关,这样的电路称为组合逻辑电路. 上图给出了一个典型的数字 ...

  2. 51nod 1639 递推

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639 1639 绑鞋带 基准时间限制:1 秒 空间限制:131072 K ...

  3. sql server数据库课程设计分析

    课题:能源管理收费系统 系统功能的基本要求: (1)用户基本信息的录入:包括用户的单位.部门.姓名.联系电话.住址 : (2)用户水.电.气数据的录入(每个月的数据的录入): (3)水.电.气价格的管 ...

  4. mongodb集群——配置服务器放分片meta信息,说明meta里包含了哪些数据信息

    在搭建分片之前,先了解下分片中各个角色的作用. ① 配置服务器.是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息.最先开始建立,启用日志功能.像启动普通的mongod ...

  5. 【Hive】数据去重

    实现数据去重有两种方式 :distinct 和 group by 1.distinct消除重复行 distinct支持单列.多列的去重方式. 单列去重的方式简明易懂,即相同值只保留1个. 多列的去重则 ...

  6. html5新增语义化标签

    注意:body.section.nav 需要h1-h6. div.header则不需要. 1):<article> 显示一个独立的文章内容. 例如一篇完整的论坛帖子,一则网站新闻,一篇博客 ...

  7. 【河南第十届省赛-D】年终奖金

    题目描述 ***公司承接了N个项目需要年底完成,每个项目有一定的难度系数.由于项目太多了,需要招聘大量的技术人员.要求每个技术人员至少完成K个项目. 考虑到有些项目之间相似性以及项目的难易程度,为了避 ...

  8. 【河南第十届省赛-B】情报传递

    题目描述 抗日战争时期,在国共合作的大背景下,中共不断发展壮大,其情报工作也开始由获取警报性.保卫性信息,向获取军政战略性情报转变.各系统情报组织遵循"荫蔽精干,长期埋伏,积蓄力量,以待时机 ...

  9. mybatis分页插件使用注意

    之前的项目用的数据库是mysql,在pom.xml引入这一个就能分页了. 后来又开了一个项目,使用的是oracle数据库,我写分页的时候发现不能实现,在网上找到资料说是必须要5.0以上的.我就导了这依 ...

  10. Java学习笔记——基础篇

    Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...