注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行代码添加注释 这是一个 scanf() 函数 某一行分号之后的内容都是注释 常规注释 常规注释位于现有汇编代码行的尾部 右击反汇编窗口右边空白的地方 选择 Enter comment,可以打开“Enter comment”对话框 或者使用快捷键“:” 输入一行注释 默认情况下,常规注释以蓝色显示 如果输入…
默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一组字符串,以及每个字符串所在的地址 双击 Strings 窗口中的任何字符串,反汇编窗口和十六进制窗口将跳转到该字符串所在的地址 将 Strings 窗口与交叉引用相结合,可迅速定位感兴趣的字符串,并追踪到程序中任何引用该字符串的位置 例如,看到 SOFTWARE\Microsoft\Windows\Cu…
IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围,或者在优化代码的过程中,编译器为节省空间,将两个或几个函数的共同结束序列合并在一起,这时 IDA 同样无法确定函数的结束部分 新建函数 在某些情况下,可以在没有函数的地方创建新函数 新函数可以由已经不属于某个函数的现有指令创建,或者由尚未被 IDA 以任何其他方式定义(如双字或字符串)的原始数据字…
栈帧(stack frame)是在程序的运行时栈中分配的内存块,用于特定的函数调用 如果一个函数没有执行则不需要内存,当函数被调用时就需要用到内存 1.传给函数的参数的值需要存储到函数能够找到它们的位置 2.函数在执行过程中可能需要临时的存储空间,通过声明局部变量来分配这类临时空间,这些变量在函数内部使用,函数调用完后,就无法再访问它们 在将控制权转交给函数之前,编译器会插入代码,将函数参数放入栈帧内,并分配足够的内存,以保存函数的局部变量 函数的返回地址也存储在新的栈帧内 使用栈帧使得递归成为…
导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的位置 这些是已经命名的导航目标 上面划红线的是交叉引用,也是导航目标 交叉引用通常被格式化成一个名称和一个十六进制偏移值 双击交叉引用文本,IDA 将跳转到引用位置 双击标有 1 的值,反汇编窗口将跳转到相应的位置,因为它们都属于给定二进制文件中的合法虚拟地址 双击标有 2 的值则不会有任何效果 跳…
启动 IDA 启动 IDA,有一个欢迎界面 之后有一个对话框 选择 New 将启动一个对话框来选择将要分析的文件 选择 Go 将使 IDA 打开一个空白的工作区 如果要选择分析的文件,可以直接拖到 IDA 工作区 也可以在菜单栏选择 File -> Open 来打开 选择 Previous 可以打开其下“最近用过的文件”列表中的一个文件 历史记录列表的最大长度为 10,可以通过编辑 idagui.cfg 或 idatui.cfg 来修改 文件加载 选择 File -> Open 打开一个新文件…
一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前曾发过 v1.5.400.2003 的汉化版,今天也来更新一下:).PEditor 功能有转存进程.检测可执行文件加壳类型.在SoftICE中插入中断.编辑PE文件的导入表.节表.重建校验和.重建程序等,其自带了一个签名管理程序可自己添加更多的壳类型来让 PETools 识别.PETools 可支持插件,并带…
生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 .nam 文件包含与 IDA 的 Names 窗口中显示的给定程序位置有关的索引信息 点击 OK 后,将会生成一个 .til 文件 .til 文件用于存储与一个给定数据库的本地类型定义有关的信息 在关闭当前项目时,生成的数据库文件将被存档,可以将它们压缩成一个扩展名为 idb 的文件 IDA 数据库指…
IDA提供的代码转换包括: 1.将数据转换为代码 2.将代码转换为数据 3.指定一个指令序列为函数 4.更改现有函数的起始或结束地址 5.更改指令操作数的显示格式 代码显示选项 通过 Options -> General 命令打开“IDA Options”对话框,并选择“Disassembly”选项卡 右上角的 Display disassembly line parts(显示反汇编行部分)区域提供的选项,可以对反汇编行进行自定义 IDA 反汇编文本视图会默认选择行前缀.注释和可重复注释 Lin…
在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口.函数窗口和消息输出窗口 可以通过 View -> Open Subviews 菜单打开这些窗口 在 IDA 中,ESC 键是一个非常有用的热键 在反汇编窗口中,ESC 键的作用与Web浏览器的“后退”按钮类似 在打开的其他窗口中,ESC 键用于关闭窗口 反汇编窗口 反汇编窗口也叫 IDA-View 窗口,它是操作和分析二进制文件的主要工具 反汇…