IDA提供的代码转换包括:

1.将数据转换为代码

2.将代码转换为数据

3.指定一个指令序列为函数

4.更改现有函数的起始或结束地址

5.更改指令操作数的显示格式

代码显示选项

通过 Options -> General 命令打开“IDA Options”对话框,并选择“Disassembly”选项卡

右上角的 Display disassembly line parts(显示反汇编行部分)区域提供的选项,可以对反汇编行进行自定义

IDA 反汇编文本视图会默认选择行前缀、注释和可重复注释

Line prefixes 为行前缀,行前缀是每个反汇编行的 section:address 部分

如果不选这个选项,每个反汇编行将不会显示行前缀(图形视图的默认设置)

Stack Pointer 为栈指针

选择该选项,IDA 将会显示栈指针在每个函数执行过程中的相对变化

这有助于识别调用约定方面的差异(例如,IDA 可能不知道某个特殊的函数使用的是 stdcall 调用约定),或者确定对栈指针的不寻常操纵

Comments 为注释,Repeatable comments 为可重复注释

取消任何一个选项,IDA 将不会显示相应类型的注释

Auto comments 为自动注释

IDA 可能会为某些指令类型自动添加注释,这种注释可以作为一种提醒,以帮助用户了解特殊指令的行为

IDA 不会为 x86 mov 等简单的指令添加注释

用户注释优先于自动注释

Bad instructions <BAD> marks 为无效指令 <BAD> 标记

IDA 可以标记出处理器认为合法,但一些汇编器可能无法识别的指令,如未记入文档的 CPU 指令(而非非法指令)

IDA 会将这种指令作为一个数据字节序列进行反汇编,并将未记入文档的指令显示为一段以 <BAD> 开头的注释,目的是生成大多数汇编程序都可以处理的反汇编代码

Numbers of opcode bytes 为操作码字节数

指定 IDA 应为每个指令显示的机器语言字节的数量,选择性地查看与汇编语言指令混杂在一起的机器语言字节

不管指令多长,IDA 都会在反汇编代码清单中为指定的字节数预留显示空间,而将反汇编代码行的剩余部分移向右边,从而为指定的操作码字节数提供空间

+ 号表示:根据当前设置,该位置的指令过长,因而无法完整显示

格式化指令操作数

右击反汇编窗口中的任何常量

菜单提供的选项可将常量 41h 重新格式化成十进制、八进制或二进制值

常量 41h 属于 ASCII 可打印常量,菜单中还提供了一个选项,可将该常量格式化成一个字符常量,快捷键为 R

常量可能是使用了 #define 语句(或其等效语句)的结果,也可能属于一组枚举常量

如果编译器已经完成对源代码的编译,它就不再可能确定源代码使用的是符号常量、文字常量还是数字常量

可以通过常量值的上下文菜单中的 Use standard symbolic constant(使用标准符号常量)选项来访问这些常量

快捷键为 M

这是所有 IDA 认为与 0AH 相等的常量

根据我们尝试格式化的常量值进行过滤后,这个对话框中的常量从IDA的内部常量列表导入

标准常量列表可用于确定某个特殊的常量是否与一个已知的名称有关,使我们免于在 API 文档中搜索潜在的匹配项

数据与代码互相转换

数据字节可能被错误地归类为代码字节,并被反汇编成指令

代码字节可能被错误地归类为数据字节,并被格式化成数据值

对反汇编代码重新格式化之前,首先必须删除其当前的格式(代码或数据)

右击想要取消定义的项目,选择 Undefine,即可取消函数、代码或数据的定义,快捷键为 U

可以使用 Edit -> Undefine

取消某个项目的定义后,其基础字节将作为原始字节值重新格式化

在执行取消定义操作之前,使用“单击并拖动”操作选择一个地址范围,可以取消大范围内的定义

取消这个函数的定义将得到下面这些未分类的字节

要反汇编一组未定义的字节,右击其中的第一个字节,在菜单中选择 Code,快捷键为 C,也可以使用 Edit -> Code

可以使用 Edit -> Data 将代码转换为数据,快捷键为 D

IDA Pro 权威指南学习笔记(十三) - 基本代码转换的更多相关文章

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

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

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

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

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

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

  4. IDA Pro 权威指南学习笔记(十一) - 名称与命名

    多数情况下,要修改一个名称,只需单击想要修改的名称(使其突出显示),并使用快捷键 N 打开更名对话框 右击需要修改的名称,并在出现的上下文菜单中选择 Rename 选项,也可以更改名称 参数和局部变量 ...

  5. IDA Pro 权威指南学习笔记(九) - 数据搜索

    Search -> Next Code 命令将光标移动到下一个包含指令的位置 Jump -> Jump to Function 命令可以打开所有函数,可以迅速选择一个函数并导航到该函数所在 ...

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

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

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

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

  8. IDA Pro 权威指南学习笔记(六) - 次要的 IDA 显示窗口

    十六进制窗口 IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用 默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字 ...

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

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

随机推荐

  1. online learning,batch learning&批量梯度下降,随机梯度下降

    以上几个概念之前没有完全弄清其含义及区别,容易混淆概念,在本文浅析一下: 一.online learning vs batch learning online learning强调的是学习是实时的,流 ...

  2. C#中PadLeft和PadRight小知识点

    当我们显示字符串数据时,有时候我们需要考虑数据的排列美观. 比如一些人名和一些编号,我们想让他们整齐对齐显示等. C# String类提供了2种操作方法: String.PadLeft(int tot ...

  3. 02-C与OC语言的一些小知识

    1.        #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1>  #import和#inclu ...

  4. 有关linux中,<math.h>的调用方法

    h{font-weight:bold;color:green;font-size:105%} p{font-size:100%} linux下C语言程序中,若要用到math.h中的函数(如:sin() ...

  5. 机器学习中的ground truth

    ground truth就是参考标准,一般用来做误差量化.比方说要根据历史数据预测某一时间的温度,ground truth就是那个时间的真实温度.error就是(predicted temperatu ...

  6. 隐居网V2.0

    经过一个月加班加点的努力,我们终于把隐居网V2.0版做好了(一个设计两个前端三个程序).上一版的隐居网因为经验不够底层架构没搭好(前台和后台都是),又是赶工期,导致后面越做越坑爹.所谓从哪里跌倒从哪里 ...

  7. Uoj 22 外星人

    Uoj 22 外星人 注意到一个数只有 \(\%\) 了小于等于自己的数时,才可能有变化,否则可以随意安排,不会对最后最优解造成影响. 用 \(f[x]\) 表示给一个数 \(x\) ,仅用 \(a[ ...

  8. xml的读取(曾删改)

    获取XML 得到 需要查询的字段名 private string GetXml(string TableName) { try { string TbName = TableName.Split('_ ...

  9. 在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘

    以 UEFI 启动的 Windows 磁盘必须是 GPT 格式.本文将介绍如何在安装 Windows 期间将磁盘从 MBR 转换成 GPT. 特别注意:操作不慎可能丢失所有数据,如果你懂得安装系统的一 ...

  10. koa2 中间件里面的next到底是什么

    koa2短小精悍,女人不爱男人爱. 之前一只有用koa写一点小程序,自认为还吼吼哈,知道有一天某人问我,你说一下 koa或者express中间件的实现原理.然后我就支支吾吾,好久吃饭都不香. 那么了解 ...