IDA使用方法-----1

0x01 启动IDA

在这里插入图片描述

  • new:反汇编一个新文件
  • go:运行,直接进入IDA
  • Previous:载入一个我们以前编译过的程序

如果不想每次都看到这个对话框,可以取消该对话框底部的Display at startup(启动时显示),如果没有勾选这个,下次启动IDA时,IDA会认为我们单击了go选项。如果我们没有勾选这个,下次希望使用这个时,我们可以按照下图做,就又可以显示了。
在这里插入图片描述

文件加载

使用File—>open命令打开一个新文件时,会看到下图所示的加载对话框。IDA会自动生成一个可能的文件列表,并显示这个列表,这个列表中将显示最适合处理选定文件的IDA加载器。
在这里插入图片描述

  • Windows PE加载器(pe.ldw)
  • MS-DOS EXE加载器(dos.ldw),PE文件格式是MS-DOS EXE文件格式的拓展形式
  • Binary File(二进制文件):这个选项会一直显示,不论加载什么文件,因为它是IDA加载无法识别的文件默认选项,它提供最低级的文件加载方式
  • 如果IDA提供几个加载器,我们一般选择第一个,其他选项我们也一般默认

0x02 界面介绍

默认界面:
在这里插入图片描述
1、工具栏区域:
在这里插入图片描述
包含与IDA的常用操作对应的工具,我们可使用 VIew–>Toolbars----->Advance mode打开高级模式工具栏,高级模式工具栏包含三排工具按钮
在这里插入图片描述

2、彩色的水平带是IDA的概括导航栏,也叫导航带,是被加载文件地址空间的线性视图。我们可以右击导航带任何位置,并选择一个可用的缩放选项。不同的颜色表示不同类型的文件类型,如数据或代码。在导航带上,会有一个细小的当前位置指示符(默认为黄色)指向当前反汇编窗口中显示地址范围对应的导航带地址。我们可以通过options—>colors自定义导航带使用的颜色。
在这里插入图片描述
3、IDA为当前打开的每一个数据显示窗口都提供了标签。数据显示窗口中包含从二进制文件中提取的信息,他们代表数据库的各种视图。
在这里插入图片描述
通过View—>Open Subviews菜单可打开其他数据显示窗口
在这里插入图片描述
4、反汇编视图是主要数据显示视图,两种形式:图形视图(默认)和列表视图。我们可以使用空格键在图形样式和列表样式之间切换。
在这里插入图片描述
如果希望列表视图作为默认视图,则必须通过Options---->General菜单打开IDA Options复选框,取消Graph选项卡下的Use graph view by default
在这里插入图片描述
5、使用图形视图时,显示区很少能够一次显示某个函数的完整图形。这时,图形概况视图可提供基本图形结构的缩小快照,其中虚线矩阵表示其在图形视图中的当前显示位置。
在这里插入图片描述
6、输出窗口显示的是IDA输出的信息
在这里插入图片描述
7、函数窗口是默认IDA显示窗口的最后一部分
在这里插入图片描述

IDA 桌面提示和技巧
  • 使用View–>Open SubViews恢复无意中关闭的数据显示窗口
  • 使用Windows—>reset desktop命令可迅速将桌面恢复到原始布局
  • 利用windows—>Save desktop命令保存你认为特别有用的当前桌面布局。使用Windows—>load desktop命令迅速打开你之前保存的一个桌面布局
  • Disassembly窗口是唯一一个可以修改其显示字体的窗口,使用Options—>fonts命令可以设置字体

0x03 IDA数据显示窗口

基本规则:

  • IDA不提供撤销功能。如果不小心按下某个键,导致数据库文件发生意外,这是,我们必须将显示窗口恢复到以前的状态
  • 几乎所有的操作都有其对应的菜单项、热键和工具栏按钮。
  • IDA提供方便的、基于上下文的鼠标右键操作菜单

IDA主要的数据显示窗口

在IDA中,ESC键是一个非常有用的热键。在反汇编窗口中,ESC键的作用与web浏览器的后退按钮类似。因此,它在导航反汇编窗口非常有用。遗憾的是,在打开其他的窗口时,ESC键用于关闭窗口。

1、反汇编窗口

反汇编窗口也叫IDA-View窗口,它是操作和分析二进制文件的主要工具。
反汇编窗口有两种显示窗口:图形和列表

IDA图形视图
图形视图将一个函数分解成许多基本块,以生动显示该函数由一个块到另一个块的控制流程。IDA使用不同彩色箭头区分函数块之间各种类型的流。在条件跳转位置终止的基本块可能会生成两种流:

  • 红色:No边的箭头,不执行分支
  • 绿色:Yes边的箭头,执行分支
    还有一个蓝色箭头,指向下一个即将执行的块
    在这里插入图片描述
    我们可使用Ctrl+鼠标滑轮来调整图形的大小。
  • 平移:通过单击图形概述和拖动图形视图的背景来定位图形
  • 重新调整块位置。通过单击指定块的标题栏并将其拖到一个新的位置,用户还可以移动每一个块的位置
  • 创建其他反汇编窗口:可以通过View–>Open subviews—>disassembly命令打开另一个反汇编空口。这样打开的第一个反汇编窗口叫做IDA View A。随后的反汇编窗口叫做IDA View B、IDA View C,以此类推。每个反汇编窗口都独立于其他窗口。我们可以在一个窗口中查看一个图形,在另一个窗口查看文本列表。
2、IDA文本视图

面向文本的反汇编窗口是查看和操作IDA生成的反汇编代码的传统显示窗口。文本显示窗口会显示一个程序的完整反汇编代码清单,用户只有通过这个窗口才能查看一个二进制文件的数据部分。
在这里插入图片描述
显示窗口的左边部分叫做箭头窗口,用于描述函数中的非线性流程。实线箭头表示非条件跳转,虚线箭头表示条件跳转。如果一个跳转将控制权交给程序中的某个地址,这时会使用粗线(实线或虚线)。出现逆向流程,通常表示程序中存在循环

函数窗口

Functions窗口用于列举IDA在数据库中识别的每一个函数
在这里插入图片描述

十六进制窗口

默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示16个字节。我们可以打开几个十六进制窗口。
在这里插入图片描述
第一个16进制窗口会与第一个反汇编窗口同步。如果一个反汇编窗口与一个十六进制窗口同步,在一个窗口滚动鼠标,另一个窗口也会滚动到相应位置(同一个虚拟地址)。如果在反汇编窗口选中一个项目,十六进制窗口中的对应字节也将突出显示。
在这里插入图片描述
有时候,十六进制窗口显示的全部是问号,这表示IDA无法识别给定的虚拟地址范围内的值。

导出窗口

导出窗口列出文件的入口点
在这里插入图片描述

导入窗口

导入窗口的功能与导出窗口的功能正好相反。它列出由被分析的二进制文件导入的所有函数
在这里插入图片描述

结构体窗口

结构体窗口用于显示IDA决定在一个二进制文件中使用的任何复杂的数据结构的布局。
在这里插入图片描述

枚举窗口

如果IDA检测到标准枚举数据类型,它将在枚举窗口列出该数据类型
在这里插入图片描述

其他IDA显示窗口

下面讨论的窗口并不是你当前需要的信息,因此,IDA一开始并不开开这些窗口。

1.Strings 窗口

我们可以通过View —> Open SubViews —> Strings命令打开
在这里插入图片描述
Strings窗口中显示的是从二进制文件中提取出的一组字符串,以及每个字符串所在的地址,双击Strings窗口中的任何字符串,反汇编窗口将跳转到该字符所在的地址。IDA默认扫描的字符串类型为至少包含5个字符的C风格、以Null结尾的7位ASCII字符串。
在这里插入图片描述
每次打开Strings窗口,IDA都会扫描或重新扫描整个数据库,查找其中的字符串。扫描字符串的操作遵照Strings窗口的设置来完成,我们右击该窗口,在出现的菜单中选择setup,即可开始设置

在这里插入图片描述

  • Display only defined strings (仅显示已定义的字符串)。这个选项使Strings窗口仅显示IDA自动创建或用户手动创建的已命名字符串数据项。
  • Igonre instructions/data definitions(忽略指令/数据定义)。这个选项会使IDA扫描指令和现有数据定义中的字符串
2、names窗口

列举一个二进制文件的所有全局名称。双击Names窗口的名称,可立即跳转到显示该名称的反汇编视图。
在这里插入图片描述
Name窗口显示的名称采用了颜色和字母编码。其编码方案:

  • F,常规函数。IDA认为这些函数不属于库函数
  • L,库函数。IDA通过签名匹配算法来识别库函数
  • I,导入的名称,通常为共享库导入的函数名称
  • C,命名代码。
  • D,数据
  • A,字符串数据
3、段窗口

段窗口显示的是在二进制文件中出现的段的简要列表。该窗口显示的信息包括段名称、起始和结束地址以及许可标志。
在这里插入图片描述
双击段窗口的任何条目,IDA将跳转到反汇编窗口中该段的起始位置。右击一个条目,IDA将显示一个上下文菜单,你可以添加新段、删除现有段或者编译现有段的属性。
在这里插入图片描述

4、签名窗口

IDA利用一个庞大的签名库来识别已知的代码块。签名用于识别编译器生成的常用启动顺序,以确定可能已被用于构建给定二进制文件的编译器。
在这里插入图片描述

0x04 反汇编导航

基本IDA导航

1、双击导航

反汇编程序时,程序的每个位置都分配一个虚拟地址。只要提供希望访问的位置的虚拟地址,就可以导航到程序的任何地址。然而,记住大量地址并非易事。这促使早期的程序员给他们希望引用的程序位置分配符号名称。这大大简化了他们的工作。我们只需双击这些名称就可跳转。

2、跳转到地址

使用jump —>jump to address命令或在处于活动状态的反汇编窗口按下热键G,均可打开Jump toAddress对话框
在这里插入图片描述

3、导航历史记录

IDA的另一项类似于传统web浏览器的功能,是它的前进和后退导航功能(基于你浏览反汇编窗口的顺序)。每次你导航到反汇编窗口中的一个新位置,你当前的位置就会添加到位置列表中。有两种方式菜单操作可用于遍历这个列表。首先,Jump —>Jump to previous Position
或者使用ESC(只能在反汇编使用,其他窗口为关闭当前窗口),或者使用工具栏上的导航按钮
在这里插入图片描述

搜索数据库

在IDA中,你可以轻松导航到你知道的位置

1、文本搜索

IDA文本搜索相当于对反汇编列表窗口进行子字符串搜索。通过Search—>Text命令启动文本搜索或者Alt+T。搜搜限制于仅查找完整的词,并且能够匹配反汇编行中的任何完整的词,包括操作码助记符或常量。最后使用Ctrl+T或者Search—>Next Text命令可重复前一项搜索,以找到下一个匹配。
在这里插入图片描述

2、二进制搜索

二进制搜索仅搜索十六进制视图窗口。根据指定搜索字符串的方式,可以搜索16进制或ASCII字符串。
Search —>Sequence of Bytes或者Alt+B即可进行二进制搜索
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

objdump命令详解

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。 选项 --archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname --targetbfdname 指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如…

《Pro ASP.NET MVC 3 Framework》学习笔记之四【领域模型介绍】

主题:应用领域驱动开发(Applying Domain-Driven Development) Domain Model是MVC程序的"心脏",其他的一切,包括Controllers和Views仅仅是用来跟Domain Model交互的一种方式,ASP.NET MVC并没有限制使用在Domain Model上面…

一步一步学pwntools(适合新手)

序 pwntools是一个二进制利用框架。官方文档提供了详细的api规范。然而目前并没有一个很好的新手教程。因此我用了我过去的几篇writeup。由于本文只是用来介绍pwntools使用方法,我不会过于详细的讲解各种二进制漏洞攻击技术。 Pwntools的“Hello World” 栈溢出无…

标志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注:下面说到的标志寄存器都是缩写,C就是CF,其他也一样 标志寄存器:C、P、A、Z、S、T、D、O的内容只会是0或1,0表示假,1表示真 O:溢出标志 一个寄存器如果存放的值超过所能表示的范围&#xf…

Firefox2狂占CPU解决办法

https://images.cnblogs.com/cnblogs_com/Tisty/138006/o_firefox3.jpg 看了一下,不知道 "jpeg_free_large" 是干啥的,遂用 "Firefox jpeg_free_large" Google 一下,出来的一堆东西里有帖子说可能和 Apple 的 QuickTime …

PUSHAD和POPAD,以及PUSHA和POPA

PUSHAD PUSHAD也叫保护现场,就是把我们的寄存器压入栈中 pushad是把eax,ecx,edx,ebx,esp、ebp,esi,edi依次压入栈中,ESP会减少32,相当于: push eax push ec…

MOVSX和MOVZX

MOVSX 先符号扩展,再传送 格式: MOVSX 操作数A ,操作数B //操作数B的空间小于A比如说我们使用命令: movsx eax,bxbx是16位,eax是32位,传值过程: 先用bx的符号位把eax高16填满,b…

LEA与XCHG

LEA 格式: LEA 通用寄存器 内存地址功能:取地址命令 将内存地址赋值给寄存器 lea eax,dword ptr ds:[ecx0x16]dword 双字 就是四个字节ptr pointer缩写 即指针ds 数据段版寄存器[]里的数据是一个地址值,这个地址指向一个双字型数据 将dwo…

ADC和SBB命令

ADC 带进位加法指令 用法: adc 操作数1,操作数2相当于: 操作数1操作数2进位标志CF->操作数1现在的eax是0,C1,用adc指令直接会是0x6 SBB 带进位减法指令 用法: sbb 操作数1,操作数2相当…

mul和div指令(8位,16位,32位)

MUL 无符号乘法指令,默认操作数与eax相乘(这里只说32位,其他与下面的div类似) 格式: mul 操作数 //操作数只有一个操作数与eax相乘,结果共有16位(这里的16位是16进制数)&#xff…

imul和idiv指令

imul 有符号乘法指令,分单操作数,双操作数和但操作数 单操作数:此形式与mul指令使用完全相同,操作数乘以al、ax、或eax寄存器中的值,乘积分别存储到ax、dx:ax或edx:eax中 执行指令&#xff1a…

Ajax的注册应用

最近发现Ajax在用户注册表单和用户登录表单方面应用,最能体现Ajax的交互特点,因此又是写了一个习作! 演示效果 新开窗口地址: http://www.klstudio.com/demo/ajax/reg.htm 下载地址:http://www.klstudio.com/demo/ajax/reg.rar &…

XADD和NEG命令

XADD 交换相加指令,先交换然后相加 比如说: xadd eax,ecx /* 相当于:先执行:xchg eax,ecx然后执行:add eax,ecx */此时eax2,ecx3,执行完:eax5,ecx2 neg …

Java——File类

一,File类的概述和构造方法 A:file类的概述 file类可以理解成一个路径 文件夹或者是文件夹路径 路径分为绝对路径和相对路径 绝对路径是一个固定的路径,从盘符开始 这里的G:\TIM 就是一个绝对路径,是一个固定的路…

vue3 配置 @符号

config,ts 配置 有 爆红 安装 npm install 一下 然后 配置 路径提示功能 tsconfig.json 配置 路径提示功能 一共这两个路径配置

mts模式_MTS的完整形式是什么?

mts模式MTS:Microsoft Transaction Server /移动电话服务/多通道电视声音 (MTS: Microsoft Transaction Server/ Mobile Telephone Service/ Multichannel Television Sound) 1)MTS:Microsoft Transaction Server (1) MTS: Microsoft Transaction Server…

Java——IO流

一,IO流常识 Ⅰ,IO流的概述 1,IO流用来处理设备之间的数据传输 2,Java对数据的操作都是通过流的方式 3,Java用于操作流的类都在IO包中 4,流 按流向分为: ①输入流 ②输出流 5&#xff0…

《软件》2011年第6期刊登出 《DB 查询分析器》中断SQL语句的执行

《软件》编辑部寄来了2011年第6期样刊,在2011年第6期,刊登出了本人的论文------“《DB 查询分析器》中断SQL语句的执行”。 论文刊登在第42页,排在第13篇,还比较靠前,呵呵。 在“万方数据”和“中国期刊全文数据库”中…

ret2libc过地址随机化

程序&#xff1a; #include<stdio.h> char buf2[10] "this is buf2"; void vul() {char buf1[10];gets(buf1); } void main() {write(1,"sinxx",5);vul(); }很明显&#xff0c;gets函数存在溢出 编译&#xff1a; gcc -no-pie -fno-stack-protect…

远控免杀专题(29)-C#加载shellcode免杀-5种方式(VT免杀率8-70)

0x00 免杀能力一览表 几点说明&#xff1a; 1、表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全家…