IDA Pro 权威指南学习笔记(十三) - 基本代码转换
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 权威指南学习笔记(十三) - 基本代码转换的更多相关文章
- IDA Pro权威指南学习笔记(一)
一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前 ...
- IDA Pro 权威指南学习笔记(十四) - 操纵函数
IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围 ...
- IDA Pro 权威指南学习笔记(十二) - IDA 中的注释
注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行 ...
- IDA Pro 权威指南学习笔记(十一) - 名称与命名
多数情况下,要修改一个名称,只需单击想要修改的名称(使其突出显示),并使用快捷键 N 打开更名对话框 右击需要修改的名称,并在出现的上下文菜单中选择 Rename 选项,也可以更改名称 参数和局部变量 ...
- IDA Pro 权威指南学习笔记(九) - 数据搜索
Search -> Next Code 命令将光标移动到下一个包含指令的位置 Jump -> Jump to Function 命令可以打开所有函数,可以迅速选择一个函数并导航到该函数所在 ...
- IDA Pro 权威指南学习笔记(八) - 基本 IDA 导航
导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的 ...
- IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口
默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...
- IDA Pro 权威指南学习笔记(六) - 次要的 IDA 显示窗口
十六进制窗口 IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用 默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字 ...
- IDA Pro 权威指南学习笔记(五) - IDA 主要的数据显示窗口
在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口.函数窗口和消息输出窗口 可以通过 View - ...
随机推荐
- Java多线程编程实战指南(核心篇)读书笔记(一)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- CUDA Samples: Ray Tracking
以下CUDA sample是分别用C++和CUDA实现的生成光线跟踪图像,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第六章,CUDA各实现 ...
- Chrome浏览器清除页面js文件缓存的方法
Chrome浏览器清除页面js文件缓存 Chrome浏览器清除js缓存方法虽然简单,但有些人还是不太会,有些人会去设置里面清除有时候没有用,这里写一下简单步骤,使用一次以后就会了,而且速度更快 1.打 ...
- 使用git将代码推到coding
1:前提下载好Git 2:在电脑上创建一个文件夹,打开此文件夹,单击右键—〉 git bash here 3:输入git init 完成后会在此文件夹下生成一个隐藏的.git后缀文件 4:将你的代码添 ...
- PDF文档过期时间/自毁设置
不是很完美的方法,可以凑活着用: 切换到Pages预览页,右击页面选页面属性 切换到Action,选Run a Javascript,代码: // PDF JavaScript to make it ...
- ZOJ3551Bloodsucker (数学期望)
In 0th day, there are n-1 people and 1 bloodsucker. Every day, two and only two of them meet. Nothin ...
- hihocoder1618 单词接龙
#1618 : 单词接龙 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个单词字典和一个起始字母.小Hi需要从起始字母开始,每次再加上一个字母,生成长度为2.3. ...
- threeJs中旋转位移等操作坐标系
1.场景中的立方体.圆柱等三维模型的位置属性.平移方法参照Scene对象的世界坐标系 2.场景中立方体.圆柱等的三维模型的角度属性.旋转方法参照模型自身的模型坐标系
- 一些Fibonacci数列的神奇性质【数学】
递推式: \(f_i=1 (1\leq i\leq 2)\) \(f_i=f_{i-1}+f_{i-2}(i>2)\) 一些性质 \(\sum_{i=1}^n f_i=f_{n+2}-1\) \ ...
- python第三方库
autopy autopy是一个自动化操作的python库,可以模拟一些鼠标.键盘事件,还能对屏幕进行访问 pywin32 win32api的python封装 PIL python的图形图像处理框架