![](https://img-blog.csdnimg.cn/2019090211485175.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
IDA
小哈龙
一颗勇往直前的心
展开
-
1.IDA-基本操作(改变Image Base地址、打开、保存IDA的不同方式)
启动 启动IDA,会出现以下对话框:New:启动一个标准的File Open对话框,让你选择Go:打开一个空白工作区,这时只需把二进制文件直接拖入到IDA工作区Previous:打开最近用过的文件中一个加载文件 拖入文件后,会弹出一个加载对话框,如果未识别文件,则默认为Binar转载 2017-07-11 17:17:53 · 1099 阅读 · 0 评论 -
19.IDA-栈指针调节、设置函数特性
栈指针调节IDA会尽其所能跟踪函数内每一条指令上的栈指针的变化。IDA跟踪这种变化的准确程度,在很大程度上影响着函数的栈帧布局的准确程度。如果IDA无法确定一条指令是否更改了栈指针,你就需要手动调整栈指针 如果一个函数调用了另一个使用stdcall调用约定的函数,就会出现上述情况,这是最简单的一种情况。如果被调用的函数位于IDA无法识别的共享库中(IDA拥有与许多常用库函数的签名和调用转载 2017-08-04 15:18:40 · 1344 阅读 · 0 评论 -
17.IDA-基本块的定义
基本块是一条或数条指令的组合,它拥有唯一一个指向块起始位置的入口点和唯一一个指向块结束位置的退出点,通常,为判定基本块,应忽略函数调用指令并未将控制权转交到当前函数这一事实,除非已知被调用的函数无法正常返回。 基本块在行为方面有一个重要的特点一旦基本块中的第一条指令开始执行,块中的其他指令都会执行,直到最后一条指令 因此,你可以为每个基本块的第一条指令设置断点,当这些断点被触发时,转载 2017-08-04 15:16:08 · 960 阅读 · 0 评论 -
16.IDA-列出函数中存在的全部call
有时待分析的函数反汇编太长,需要确认此函数调用了哪些call 选择View▶Open Subviews▶Function Calls窗口窗口的上半部分列出了所有调用当前函数(由打开窗口时光标所在位置决定)的位置 窗口的下半部分列出了当前函数做出的全部调用如,查看fopen的反汇编调用转载 2017-08-04 15:11:11 · 1203 阅读 · 0 评论 -
13.IDA-显示正确的函数名称(去掉c++后缀命名)
随便看一段IDA的反汇编: C++编译器用于区分重载函数的机制。为了给重载函数生成唯一的名称,编译器用其他字符来修饰函数名称图左就是C++的后缀命名法,图右是正常的函数名字为了显示正常的函数名字,使用Options▶Demangled Names 比如,我们选中Names,反汇编将显示为: 附如果一个二进制文件使用了后缀命名,IDA的取转载 2017-08-04 15:08:31 · 1844 阅读 · 0 评论 -
10.IDA-基本操作
打开IDA,拖拽一个EXE文件进去,首先会弹出如下窗口:Kernel option1、Kernel option2、Processor option这三个选项会控制反汇编引擎的工作状态,一般按默认即可,大多数情况下,分析选项的默认值在准确性和方便性之间提供一个折中参数,如果IDA分析出有问题的代码时,把Kernel option1中的选项Make final analysis pa转载 2017-08-04 14:57:39 · 637 阅读 · 0 评论 -
12.IDA-虚函数和虚表
vtable编译器会为每一个包含虚函数的类(或通过继承得到的子类)生成一个表,其中包含指向类中每一个虚函数的指针,这样的表就叫做虚表(vtable)__vfptr每个包含虚函数的类对象都获得__vfptr指针,并且是对象的第一个数据成员编译器必须要保证虚函数表的指针存在于对象实例中最前面的位置在计算对象的总大小时,也必须考虑到虚表指针。比如new,传递给转载 2017-08-04 15:04:06 · 2619 阅读 · 0 评论 -
0.IDA-基本的反汇编算法
1.线性扫描原理:一条指令结束,另一条指令开始关键:确定起始位置 流程:从起始,逐条反汇编指令,直到完成整个代码段优点: 可覆盖程序的所有代码段缺陷: 如果代码段中混有数据!gdb windbg objdump均采用线性扫描2.递归下降转载 2017-08-04 14:56:14 · 711 阅读 · 0 评论 -
7.IDA-创建结构体
结构体分类结构体的一个显著特点在于,结构体中的数据字段是通过名称访问,而不是像数组那样通过索引访问。不好的是,字段名称被编译器转换成了数字偏移量。结果,在反汇编代码清单中,访问结构体字段的方式看起来与使用常量索引访问数组元素的方式极其相似。注意的是,结构体中有个内存对齐规则,所以不要认为编译器会利用所需的最小空间来分配结构体。默认情况下,编译器会设法将结构体字段与内存地址对齐,以最转载 2017-08-04 14:35:13 · 2747 阅读 · 1 评论 -
8.IDA-数据与代码、函数互相转换
在重新格式化之前,首先必须删除其当前的格式(代码或数据)。在结果上下文菜单中选择Undefine(也可使用Edit▶Undefine命令或热键U),即可取消函数、代码或数据的定义,关键是,必须中间执行Undefine1.函数和数据互换在重新格式化之前,首先必须删除其当前的格式(代码或数据)。右击你希望取消定义的项目,在结果上下文菜单中选择Undefine(也可使用Edit▶Unde转载 2017-08-04 14:38:25 · 3767 阅读 · 1 评论 -
6.IDA-重命名、注释
由于IDA基础数据库的本质,你对反汇编代码所做的更改将迅速“扩散”到IDA的所有子窗口中,以使反汇编代码保持一致说明[cpp] view plain copy记住,IDA不提供撤销功能。在操纵数据库时,请一定记住这一点。你所能做的,就是经常保存数据库,并恢复到最近保存的数据库版本。 1.改名多数情况下,要转载 2017-08-04 14:17:04 · 2672 阅读 · 0 评论 -
5.IDA-文本搜索、二进制搜索(16进制字节序列)、替换16进制
1.文本搜索IDA文本搜索相当于对反汇编列表窗口进行子字符串搜索。通过Search▶Text(热键:ALT+T)命令启动文本搜索选择Find all occurences(查找所有结果),IDA将在一个新的窗口中显示搜索结果,最后,使用CTRL+T或Search▶Next Text(Ctrl+T)命令可重复前一项搜索,以找到下一个匹配结果文本搜索不一定准确,转载 2017-08-03 20:19:21 · 9916 阅读 · 0 评论 -
2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)
当IDA加载后,3个立即可见的窗口分别为IDA-View窗口、函数窗口和消息输出窗口,所有窗口都可通过View▶Open Subviews菜单打开反汇编窗口反汇编窗口也叫IDA-View窗口,它是操作和分析二进制文件的主要工具0.在反汇编窗口中,ESC键的作用与Web浏览器的“后退”按钮类似,遗憾的是,在打开的其他窗口中,ESC键用于关闭窗口IDA使转载 2017-07-11 17:59:54 · 1015 阅读 · 0 评论 -
4.IDA-导航(跳转到地址、导航按钮、栈帧、调用约定、局部变量布局、IDA的栈视图)
1.跳转到地址使用Jump▶Jump to Address命令或在处于活动状态的反汇编窗口中按下热键G,均可以打开Jump to Address对话框,如果把这个对话框看成Go对话框,可能有助于你记住相关的热键。IDA会记住你在这个对话框中输入的值,并通过一个下拉列表显示,以方便你随后使用2.导航按钮(导航历史)导航按钮,每个按钮旁边还有一个转载 2017-08-03 19:19:37 · 6399 阅读 · 0 评论 -
3.IDA-数据显示窗口(导出窗口、导入窗口、String窗口、...窗口)
在IDA中,ESC键是一个非常有用的热键。在反汇编窗口中,ESC键的作用与Web浏览器的“后退”按钮类似,而在打开的其他窗口中,ESC键用于关闭窗口。1.导出窗口导出窗口列出文件的入口点。这包括程序的执行入口点(在程序的文件头部分指定),以及任何由文件导出给其他文件使用的函数和变量,对于exe来说,至少有一个导出函数,程序的执行入口点。IDA将这个入口点取名为start转载 2017-07-11 18:16:37 · 1631 阅读 · 0 评论 -
20.IDA-修改二进制文件、显示修改点
1.功能选项Edit▶Patch Program菜单是GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单 可用选项如图所示 1.1.Change byte用于编辑IDA数据库中的字节值。相关的字节编辑对话框如图所示 这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。 同时,转载 2017-08-07 10:25:37 · 2608 阅读 · 0 评论