IDA工具的基本使用

  • IDA工具的使用
    • 1、文件的打开与关闭
    • 2、窗口介绍:图形 文本 其他窗口
      • 2.1、图形界面:
      • 2.2、文本界面:
      • 2.3、反汇编窗口
      • 2.4、 十六进制窗口
      • 2.5、 文件使用的模块(函数)
      • 2.6、文件导出的模块(函数)
      • 2.7、结构体(IDA识别出来的)
      • 2.8、枚举
    • 3、显示硬编码(ACDU)
      • 3.1、ACDU
        • 3.1.1、A
        • 3.1.2、C
        • 3.1.3、D
        • 3.1.4、U
    • 4、跳转指令 G
    • 5、搜索指令(ALT+T)
    • 6、修改名称(N)
    • 7、创建结构体 修改全局变量 修改局部变量
      • 7.1、创建结构体
      • 7.2、修改全局变量
      • 7.3、修改局部变量
    • 8、注释
      • 8.1、分号注释
      • 8.2、SHIFT加分号注释
      • 8.3、函数注释
    • 9、交叉引用
    • 10、总结

IDA工具的使用

1、文件的打开与关闭

  • 1、F5反编译成C语言

  • 2、关闭选项

IDA生成的数据库文件会打包成一个文件,下次使用就不需要打开源文件了,只需要打开这个数据库文件即可。第三个和这个类似

第一个选项会生成四个文件

当IDA很大的时候,这个选项会把很多不用的内存释放掉,保证文件占用的空间很小

关闭的时候此次做的操作不保留。IDA中唯一回退的方式。

2、窗口介绍:图形 文本 其他窗口

2.1、图形界面:

2.2、文本界面:

图形界面与文件界面的切换使用空格键

2.3、反汇编窗口

进入IDA的默认窗口

2.4、 十六进制窗口

2.5、 文件使用的模块(函数)

查看文件使用了哪些模块(函数),其实是根据导入表生成的

2.6、文件导出的模块(函数)

2.7、结构体(IDA识别出来的)

通过符号表识别出来的

2.8、枚举

3、显示硬编码(ACDU)


输入框中填写硬编码的长度,最大16。(我们的可执行程序都是由硬编码组成)。我们改成10看看效果,如下图:

图中的部分就是硬编码。每一行硬编码对应着一行汇编代码。

3.1、ACDU

随便用一段代码举例说明,原始如下:

3.1.1、A

把当前的数据按照字符串来显示

转换成字符串:

3.1.2、C

把当前的数据按照代码来显示

3.1.3、D

把当前的数据用按照数据来显示

按一下表示单字节显示,按两下双字节显示,按三下表示四字节显示,按三下表示八字结显示

3.1.4、U

把当前的数据按照未定义(原始的字节)来显示

4、跳转指令 G

按一下G

在输入框中输入地址就可以进行跳转。

5、搜索指令(ALT+T)

按下alt+t:

6、修改名称(N)

当我们分析一段汇编的时候,分析完成需要对一个函数或一个变量我们有自己的理解,我们需要对它改成我们想要的名称时按N来修改。

例如:

按N修改:


7、创建结构体 修改全局变量 修改局部变量

7.1、创建结构体

在我们使用IDA的时候,我们对一段汇编代码进行解读的时候,发现其为一个结构体,此时IDA并未识别出来,那么我们可以在Structures文件中增加一个结构体。

点击Edit 选择 add struct type。

此时会让我们输入结构体的名称,我们随便输入一个,如下:

此时AAA结构体已经出来了,那么如何向结构体中增加整数,字符,数组,结构体呢?

操作如下:

  • 添加普通类型(db、dw、dd):

选中我们创造的结构体第一哥成员,按D

此时就添加了一个成员,此时field_0的类型为一个字节,我们选中db然后按D就可以更改其字节数(一字节,两字节,四字节)。

此时名称我们也需要修改成我们想要的名称,怎么办呢?

如上面讲解,按N就可以修改

此时名称修改成了a,宽度修改成了两字节。

  • 添加结构体类型

如上述方式先按D添加一个成员。然后选中成员按下alt+q就可以识IDA已有的所有结构体,添加自定义结构体需先自己添加好,如图:

随便选择一个即可。修改结构体的名称和上述一样,按下N即可。

  • 添加数组

    如上述方式先按D添加一个成员。

右键我们的成员(db),选择数组,然后修改数组的大小即可。



修改名称一样按N修改,我们修改为C,此时就定义了一个数组名称为C,类型为dw(双子节),长度为10.

此时我们就在IDA中创建了一个结构体。我们就可以在我们的代码中引用这个结构体了。

7.2、修改全局变量

比如说我们选中一个全局变量,我们要修改其为我们刚刚添加的结构体,怎么做呢?

很简单选中这个变量,按下alt+q,此时会列举出这个IDA所有识别出来的结构体,选择我们刚刚添加的结构体即可。

改完他的类型,IDA会自动给我们生成一个名字,这个名称我么也可修改,并且后续用到的这个变量的地方都将修改成我们修改的名称。

7.3、修改局部变量

当我们修改局部变量的时候,快捷键是T,我们需要找到这个结构体并选中结构体的成员点击确定就可以修改了。(IDA会按照偏移把相应的值列出来)

我们逆向的过程,就是给函数起名字,分析结构体,分析出结构体类型,分析出全局变量类型,分析出参数类型,当我们把这些全都分析好,整个逆向的过程也差不多了。

8、注释

注释有三种方式

8.1、分号注释

在一句代码的末端按下分号(;)会跳出一个文本框,此时我们输入注释,则就会在代码的末尾添加上注释。

这么做的话,他不仅会在本行的末尾添加注释,也会在其他跳转到本行的地方也会添加一段注释。有利有弊。

8.2、SHIFT加分号注释

上面我们说了分号注释他不仅会在本行的末尾添加注释,也会在其他跳转到本行的地方也会添加一段注释。那么我们不希望在跳转的地方也显示注释怎么办呢?

shift + ; 注释就可以在其他跳转到本行的地方不会添加注释了

8.3、函数注释

那么,我们在向写C语言函数的时候,我们想在函数的前面加上注释(函数名,参数、返回值等信息)的时候,我们选中函数名,按下分号,此时就可以添加注释了。

9、交叉引用

比如说我们遇到一个函数,我们想看他还被谁引用了,怎么做呢?

当然在函数名的右下角也有显示,但是补全,如下:

那我们如何查看完整的引用呢?

首先选中函数名,点击上方菜单栏的的view,选择open subviews,在选择cross reference,就可查看所用引用这个函数的地方了。

当然我这里找的是main韩式只有一个。

10、总结

IDA的功能还有很多很多,掌握上面流出的一些基本操作,基本的逆向的操作基本是没有问题的,如果还有其他欢迎补充,谢谢。

逆向-IDA工具的基本使用相关推荐

  1. 【世界上最优秀的逆向分析工具】IDA Pro6.1绿色版

    [世界上最优秀的逆向分析工具]IDA Pro6.1绿色版 让编程改变世界 Change the world by program 世界上最优秀的静态逆向工具没有之一 [caption id=" ...

  2. 逆向分析工具有哪些?

    逆向分析工具介绍,来看看逆向分析的工具有哪些? 逆向分析工具呢在二进制代码分析的过程中是必不可少的,这些软件分析工具包括以下: 1.系统监控工具 2.反汇编器 3.调试器 4.和反汇编译器 系统监控工 ...

  3. 逆向工程 sql_mybatis逆向生成工具,真的很好用!

    点击蓝字"程序员考拉"欢迎关注! 应某位朋友的要求,针对SSM系统,以及如何使用mybatis逆向生成工具做一个简单的介绍.本教程会讲解如何从零开始一步一步搭建出SSM系统,其中M ...

  4. 【SSM 4】Mybatis逆向生成工具

    在上一篇博客中说到,Mybatis是灵活的SQL语句应用,不想Hibernate一样有其封装好的方法,那么,当我们用Mybatis的时候(Hibernate),我们都需要编写其实体类,和配置文件.本篇 ...

  5. mybatis-generator 逆向生成工具(实体、dao、sql)

    介绍: mybatis-generator 是一个逆向生成工具,用于将数据库表逆向生成实体对象(entity),持久层Dao接口以及用于操作数据库的sql语句xml文件.对于简单的单表操作,增删改查几 ...

  6. android逆向必备工具

    Android 逆向用途 : 软件防护 : 根据逆向的方法针对性的开发防护策略 ; 算法研究 : 在没有源码的前提下 , 通过反编译 , 反汇编 , 拿到 Smali 代码 , 研究其产品的算法 , ...

  7. 【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )

    文章目录 一.IDA 32 位 / 64 位 版本 二.汇编代码视图 IDA View-A 三.字符串窗口 Strings window 一.IDA 32 位 / 64 位 版本 IDA 安装完毕后 ...

  8. 【Android 逆向】IDA 工具使用 ( 交叉引用数量设置 | 调试设置 )

    文章目录 一.交叉引用数量设置 二.调试设置 一.交叉引用数量设置 选择 " 菜单栏 / Options / General - " 选项 , 弹出如下对话框 , 显示交叉引用深度 ...

  9. 【Android 逆向】IDA 工具使用 ( 同步指定的 IDA View 视图 | Hex View 数据格式 | 过滤设置 )

    文章目录 一.同步指定的 IDA View 视图 二.Hex View 数据格式 三.过滤设置 一.同步指定的 IDA View 视图 IDA 中可以 同时打开多个 IDA View ( 下图红色矩形 ...

  10. 【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )

    文章目录 一.函数窗口 Function window 二.创建引用图 Xrefs graph to 三.创建调用图 Xrefs graph from 一.函数窗口 Function window 左 ...

最新文章

  1. GitHub 2021年度报告发布:中国755万开发者排名全球第二!
  2. mysql 5.6 并行复制_MySQL 5.6并行复制架构
  3. Node.js模拟发起http请求从异步转同步的5种方法
  4. 分割 标注数据_7种常用的数据标注工具
  5. C#多线程编程实战(二):线程同步
  6. 剑指offer十二:数值的n次方
  7. smartforms金额或者数量字段显示不出来
  8. [js高手之路]构造函数的基本特性与优缺点
  9. linux cgoup内存限制,Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)
  10. java canvas 缩放图片_详解如何用HTML5 Canvas API控制图片的缩放变换
  11. lsb_release -a 查询系统版本
  12. python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文
  13. android 初始化语言,25.Android init language (安卓初始化语言)
  14. Unity3d开发IOS游戏 基础
  15. mysql设置user权限允许远程_mysql 用户及权限管理 允许远程连接
  16. (c语言)求满足表达式1+2+3+.......+n<=1000的最大的n
  17. Fiddler设置断点(一)
  18. dedecms mysql使用中_dedecms织梦数据库类使用方法$dsql
  19. Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
  20. Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator

热门文章

  1. 基于arduino WS2812b RGB灯带控制程序一
  2. 区块链分享ppt,区块链ppt,区块链入门ppt
  3. 解决资源监视器不显示的问题。
  4. Github Desktop for macos_zh 汉化
  5. 利用obs技术进行推流直播
  6. 《信号分析与处理》基于LabVIEW的心音信号的频域分析(数字信号、信号与系统实验、毕业设计、期末大作业)
  7. SQL注入:SQL注入防御
  8. Unity之粒子特效参数详解
  9. matlab批量写入文件,matlab批量合并txt文件
  10. PowerBuilder2017