热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IDA使用之旅(二)工具及窗口的使用

一、主要窗口1、显示函数调用图表显示函数调用图表:   2、显示当前函数的流程图 3、窗口管理。可以打开自己无意关闭的窗口,可以增加查看的标签选项:   或者重设窗口:窗口-重设

一、主要窗口
1、显示函数调用图表
显示函数调用图表:

 

 

 2、显示当前函数的流程图

 3、窗口管理。

可以打开自己无意关闭的窗口,可以增加查看的标签选项:

 

 

 或者重设窗口: 窗口->重设窗口

或者对好的窗口布局进行保存:窗口->保存

 

4、查看
选项->常规

 

 

 

5、数据窗口
包括String和Names

 

 

 6、交叉引用

在出现XREF 的地方就是有交叉引用(如下图);

而在XREF后面的向上箭头,双击它可以跳到它跳转的地方(如下图);

 

 

  7、IDA不支持撤销功能。

8、

Ctrl+滚轮实现浏览的放大和缩小。

 9、看懂图形概况图
如下图所示,绿色箭头表jz short loc_1305B指令成立时,跳到下面;

红色的方向箭头表示不成立时的执行方向;(红色其实是没有被执行的。)

蓝色是指指向下一个立即执行块。

(注意跳转后的地址也是loc_1305B,说明上一块的结束地址就是下一块的开始地址)。

 

 

 10、看懂代码中的地址

 

 11、添加注释

Enter+冒号 可以添加注释:

 

 

 12、名字窗口中表示的类别

F:可能是导入函数,也可能是自己写的函数;

I:导入函数;(I 类型的也可能是自己写的),eg:

 

 

 A:字符串;

L:库函数;

D:全局的命令代码;

 

 

 13、函数中出现的标识含义

Sub_XXXXXX  

子程序
loc_xxxxxx

地址
byte_xxxxxx

8位数据
word_xxxxxx

16位数据
dword_xxxxxx
unk_xxxxxx

未知的

二、次要窗口
1、

 IDA View-A窗口与 Hex View-A窗口,一个是主要窗口一个是次要窗口,

它们其实是同步的,即选中其中一个窗口另一窗口位置也会发生变化。

 

 

 设置上述功能是在此Hex View-A中右击:

 

 

 2、导出窗口

里面列出来的函数就是此文件的入口点。它是导出给用户使用的接口,通常是用户的共享库。

双击其中函数,会跳到反编译窗口的中位置。

可以对这里的函数设置断点:

 

 

 3、导入函数

从系统中导入的函数。如下图表DbgPrint从ntoskrnl导出的。

 

 

 如果双击函数,可以看到它调用到了反编译窗口中的idata部分:

 

 

 由于IDA是静态的工具,而ntoskrnl是静态库,所以能相入;如果遇到从DLL导入的名字,可能会出现乱码。

 -------------------------------

注意:Exports窗口只能列出此EXE或DLL通过.lib链接到的库的接口:

 

 

 4、函数窗口

窗口中的函数的属性中的R,表采用EBP寄存器。我们以DbgPrint中的R属性为例,双击它跑到反汇编的地方是有 ebp的。

 

 

 5、结构体窗口

双击可以查看到结构的成员。

 

 

 6、枚举窗口

类似于结构体类型。

 

 
三、其它窗口
1、Segmentation

 

 

 

  2、标签

因为我们的驱动是DDK编译的,没识别也是正常的。

IDA通过签名库来支持代码块,签名是用于识别编译器生成的代码的启动顺序,以确定结构能给二进制编译器;

也可以将代码规划,由编译器的插件插入已知库,在IDA识别你认识的库时,会更多地将精力放在IDA无法识别的库。

3、类型库

 

 IDA可以从头文件中了解到结构的大小和布局,所有的信息都收集在til文件中

如果要让IDA加入其他库和头文件,那么在Type Libraries中按"Insert"键来加入。

4、函数调用窗口
打开函数调用窗口时,IDA会显示光标所在的函数的邻近,且生成一结图。

 

 

 红色为被调用的函数。

5、问题窗口
这个窗口也少用到。

显示在二进制遇到的一些困难,虽然反汇编最简单的二进制文件也是困难的。

 

 

 如上图所示表示:dd 6Dh dup(0) 这条指令,IDA它不知道,需要你来分析,它发生的地址是INIT:0001404C。



推荐阅读
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
author-avatar
小屁孩你不懂cl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有