一、IDA的下载

ida的官网下载地址ida下载,包含x64和x32.

也可以在52破解上下载。

二、IDA的介绍及如何使用

1.IDA简介

IDA,全称为交互式反汇编器专业版(Interactive Disassembler Professional),是一款功能强大的静态反编译软件。它被广泛用于软件安全分析,尤其是在0day研究和ShellCode分析中不可或缺。IDA Pro以其交互性、可编程性、可扩展性以及对多处理器的支持而闻名,能够在Windows、Linux、WinCE、MacOS等多个平台上运行,分析各种程序代码。

IDA Pro支持多种CPU指令集,包括但不限于Intel x86、x64、MIPS、PowerPC、ARM、Z80、68000和c8051。这使得IDA Pro能够分析各种不同架构的程序,成为逆向工程领域的重要工具。IDA Pro的递归下降反汇编能力,以及其在区分代码和数据、确定数据类型方面的高效算法,使得它能够提供接近源代码的反汇编输出。

2.在IDA中打开文件

双击ida

ida

new会打开一个空白页面,把想逆向的文件拖进去即可,或者点击go直接去打开文件。

ida

3.界面简介

打开后如下界面

界面简介


界面各个窗口介绍

  • 导航条含义

    蓝色:表示常规的指令函数,绝大部分为用户编写的代码,上图中绝大部分数据属于蓝色数据。

    黑色:表示间隙部分内容,可执行文件中包含多个节段,相邻节段之间存在空隙,红色表示空隙部分。

    银白色:表示数据项部分内容,可执行文件中会包含大量数据,银白色表示数据项部分内容。

    粉色:表示外部导入符号,通常可执行文件会导入外部的库函数。

    暗黄色:表示IDA未识别的内容,需要用户根据需求自行分析。

  • IDA View(反汇编窗口)的含义

    包括三种反汇编视图:文本视图、图表视图、路径视图。

    反汇编窗口属于逆向分析过程中关注频率最高的窗口,通过此窗口可以逆向分析反汇编代码。

  • Hex View含义

    二进制查看窗口总共分为三部分,三部分内容分别位于上图左、中、右,三处含义分别为:

    左边数据:表示二进制数据对应的内存相对偏移。

    中间数据:表示内存中数据的具体内容。

    右边数据:表示内存数据的字符串显示,该功能可辅助读者快速识别字符串内容。

    用户可在二进制查看窗口中编辑二进制数据,从而满足篡改数据的测试需求。

    图标视图中红黄蓝线的应用

  • Structures含义

    结构窗口提供用户查询已定义的结构体,同时IDA可识别出可执行文件包含的部分结构体数据,结构窗口可通过快捷键“+”、“-”展开和收缩结构体,IDA结构窗口支持用户自定义结构体。

  • Imports含义

    IDA提供导入函数窗口,用于可在导入函数窗口中查看当前可执行文件导入哪些外部函数库及函数,通过导入函数窗口可获取到函数内存相对偏移地址、函数名、导入函数所属的库文件。

  • Exports含义

    IDA的导出函数窗口提供可执行文件导出函数信息,通过导出函数窗口可获取到导出的函数名、函数对应的内存相对偏移地址。

  • Function含义

    IDA提供函数窗口供玩家查找函数信息,在窗口按下“CTRL + F”快捷键便可根据需求搜索函数名,快速定位函数名方式可提供逆向分析效率。

  • Enum含义

    枚举窗口。

    4.快捷键详细介绍

    快捷键 功能说明
    空格键(space) 反汇编窗口切换文本与图形
    Enter 跟进函数实现,查看标号对应的地址
    Esc 在反汇编窗口中使用为后退到上个操作的地址处
    A 将选择的信息转换成ASCII(转换成可读性跟强的字符串)
    B 十六进制与二进制数转换
    C 解释光标处的地址为一条指令(代码)
    D 解释光标处的地址为数据,每按一次将会转换这个地址的数据长度
    G 跳转到指定地址
    H 十六进制与十进制数转换
    K 将数据解释为栈变量
    M 解释为枚举成员(转换为枚举类型常量)
    N 对符号重新命名
    O 解释地址为数据段偏移量,用于字符串标号
    P 创建函数
    R 将ASCII转换为字符
    T 解释数据为一个结构体成员(解析结构体偏移)
    U(indefine) 取消定义光标处函数、代码、数据的定义
    X 转换视图到交叉参考模式
    Y 设置变量类型
    / 伪代码中进行注释
    : 光标所在位置添加常规注释和可重复注释
    F2 设置断点(F2在十六进制窗口进行修改,然后再按F2应用)
    F4 运行到光标所在处(可用于跳出循环)
    F5 查看伪代码
    F7 单步步进
    F9 动态调试程序(其实IDA主要用作静态分析用的)
    F10 打开反汇编选项菜单快捷键
    F12 暂时停止
    Ctrl+F2 重新开始
    Art+F2 结束跟踪
    Ctrl+F7 自动步入,在所有的函数调用中一条一条地执行命令,断点或异常时,自动 停止
    Shift + E 提取数据
    Shift + F5 打开签名窗口
    Shift + F9 添加结构体
    Shift + F12 自动分析出参考字符串
    Ctrl + F 搜索字符串
    Ctrl + M 查看标签(列举出当前已经添加的标签)
    Ctrl + S 查看段的信息(列举出二进制程序的段的开始地址、结束地址、权限等信息)
    Ctrl + X 交叉引用,类似于OD中的栈回溯操作
    Ctrl + F9 导入c头文件
    CTRL + F12 函数调用图
    Alt+T 搜索字符串(文本搜索)(可用于搜索main函数)
    Alt+B 搜索十六进制(用于搜索十六进制字节序列,通常在分析过程中可以用来搜索opcode)
    Alt+G 转换局部变量为结构体
    Alt+L 标记(Label)
    ALT + M 添加标签(mark)
    Ctrl+Shift+W 拍摄IDA快照
    view–>open subviews 可以恢复你无意中关闭的数据显示窗口
    windows–>reset desktop 可以恢复初始ida布局
    option–>font option–>font
    option–>general->Auto comments 自动添加反汇编注释

    5.判断IDA分析可执行文件完毕的三种方法

    1.图中IDA的“Output Window”窗口输出“The initial autoanalysis has been
    finished”日志时,则说明IDA已分析完毕。

    2.如图所示进度条处黄色向上箭头消失时,则表明IDA分析完毕。

    3.图中IDA界面左下角AU处于”idle”状态时,也表明IDA分析完毕。

三、用IDA分析程序实例

1.查壳

  • 使用exeinfo pe52破解查壳看他是64位还是32位的程序或者其他类型的如ELF等,以便于事后进行分析。

  • 或者使用peid来进行查壳peid官网地址

    操作

    程序easy-64

    拖入exeinfope后如图

    壳

    得到程序为ELF类型的。

    2.用IDA进行分析

    拖入IDA打开后点击main函数进行查看

    由于对于汇编代码不熟悉,点击tab键进入伪代码。

    ida分析

    伪代码

    由此我们得到了flag