zoukankan      html  css  js  c++  java
  • IDA使用之旅(二)工具及窗口的使用

    一、主要窗口
    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。

  • 相关阅读:
    mongo 语法总结
    关系型数据库和非关系型数据库
    navicat for mongodb激活 工具和 激活流程
    理财的重要性
    【日常记录】【unity3d】 OnTriggerEnter 和 OnCollisionEnter (2D) 的区别
    【日常记录】【unity3d】 2D跳跃过快导致角色某帧陷入地面
    【日常记录】【unity3d】 获取手柄轴的输入
    【Java】java 中的泛型通配符——从“偷偷地”地改变集合元素说起
    【日常记录】用 vs2015 编译 love2d 引擎时出现 依赖项目luajit编译失败的解决办法
    【翻译&转载】shader的导数函数介绍
  • 原文地址:https://www.cnblogs.com/yuanscn/p/12732529.html
Copyright © 2011-2022 走看看