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. 2017《Java技术》预备作业01

    2017<Java技术>预备作业 1.学习使用MarkDown 本学期的随笔都将使用MarkDown格式,要求熟练掌握MarkDown语法,学会如何使用标题,插入超链接,列表,插入图片,插 ...

  2. java程序编写需注意的问题

    初学java,免不了很多注意事项 加分号 类名与文件名一致 javac fileName而非javac fileName.class ```java System.out.println(" ...

  3. SimpliciTI无线开发 — 快速搭建低功耗、低成本无线传感器网络

    一.初闻SimpliciTI SimpliciTI是TI在2007年宣布推出的针对小型简单RF网络的专有低功耗协议,因其简化了具体的实施操作,降低对微控制器资源的占用,故基于SimpliciTI的RF ...

  4. wait() ,notify() ,notifyAll(),synchronized 和同步方法锁,对象锁的联系,关系,区别;

    一直不明白一个问题,因为在书上关于生产者和消费者的例子里看到一段这样的代码,估计很多人都和我一样迷惑 public synchronized void set(String name, String ...

  5. Cocos2d-X 3.2环境的配置

    大三寒假时间特别长,终于准备坐下来好好去学一直想涉足的游戏开发.既然准备学,就要找个出色的.跨平台的引擎来实现自己的计划.最终我选定了Cocos2d-X. 在折腾了很久之后,我终于把Cocos2d-X ...

  6. Cloudify介绍

    一篇关于Cloudify的介绍,可以看一下:http://timeson.iteye.com/blog/1699730

  7. Cocos2d-x第一次调试出现的问题

    1.无法打开包括文件:“CCStdC.h“ http://blog.csdn.net/jbboy/article/details/9773087 2.无法打开文件“libcocos2d.lib” 用v ...

  8. Adreno Profiler 提取手机游戏资源

    https://blog.csdn.net/lly20000/article/details/79774755 step.1 准备工具 1.adb连接工具(我用的cofface adb  ) [cof ...

  9. Linux环境下安装zookeeper

    1. 下载安装文件zookeeper-3.4.6.tar.gz 镜像地址1: http://apache.fayea.com/zookeeper/ 镜像地址2: http://mirrors.hust ...

  10. bower.json 的版本范围

    bower.json 的版本范围 有小伙伴问 ~2.2.0 什么意思. 而且在git 的tags 中没有了 2.2.0 版本,怎么样? 实际上 ~2.2.0 的意思是 >=2.2.0 <2 ...