IDA详细使用教程

2023-11-15

软件介绍

Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器,而 IDA 是运行于 32/64 位下,可用作反编译和调试的一个完整的逆向工具。使用 IDA 尽管是个更加复杂的学习过程,但它提供了 Ollydbg 无法实现的静态逆向分析 手段,并且使用户能够在 WindowsLinuxMacosx 本地环境以及以下环境中远程操作。

IDA全称是交互式反汇编器专业版,人们其简称为IDA,IDA pro 是业界最成熟、先进的反汇编工具之一,是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉WindowsLinux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

IDA Pro 的主要优点是它允许以交互方式更改显示数据的任何元素:
给函数、变量、数据结构等命名。
更改数据表示(如数字、各种编码的字符串、数据结构)
搭建图表和代码流程图,简化对反汇编代码的理解
使用c++中有关函数参数和结构定义的类型信息,以便自动命名参数和变量
自动识别和命名汇编代码中的标准库函数
等等

目录结构

IDA的安装根目录下有许多文件夹,各个文件夹存储不同的内容

cfg:包含各种配置文件,基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg,文本模式用户界面配置文件idatui.cfg,
idc:包含IDA内置脚本语言IDC所需要的核心文件
ids:包含一些符号文件
loaders:包含用于识别和解析PE或者ELF
plugins:附加的插件模块
procs:包含处理器模块

在这里插入图片描述

启动页面

在这里插入图片描述

  1. New(新建) :选择new将启动一个标准file open对话框来选择将要分析的文件。根据选择的文件,ida将显示外一个或多个对话框,再选择特定的文件分析选项。然后加载,分析并显示。

  2. Go(运行):go键终止加载程序,使IDA打开一个空白工作区域。可以将二进制文件直接拖入,或使用file菜单中的选项。IDA会利用已知扩展名的过滤器限制file对话框显示。请确保修改或清除该过滤器【如选择all files】,以便file对话框正确显示你想要打开的文件【在非windows系统中,可执行文件可能没有扩展名】。以这种方式打开文件时,IDA会尝试自动识别选定文件类型,需要注意loading对话框,看ida用哪个加载器处理。

  3. Pervious :使用previous可以打开“最近用过的文件”列表中的一个文件。“最近用过的文件”列表中包含IDA的windows注册表项的history子项中的值。默认长度为10,可以编辑idagui.cfgidatui.cfg修改其值。

IDA文件加载

new打开一个新文件后会看到如下对话框

在这里插入图片描述

  1. IDA会生成一个可能的文件类型列表,在顶部显示,它将显示最适合处理文件的加载器。

  2. Binary File(二进制文件) 是列表最后一个选项,会一直显示,是IDA加载无法识别文件的默认选项,提供最低级的加载方法。需要使用二进制加载器的情形包括:分析从网络数据包或日志文件中提取出来的rom镜像和破解程序负载。

  3. processor type【处理器类型】下拉菜单中,可以指定在反汇编过程中使用的处理器模块【在idaprocs目录中】。多数情况下,ida将根据可执行文件头中读取信息,选择合适的处理器。

界面介绍

  • 导航栏:显示程序的不同类型数据【普通函数、未定义函数的代码、数据、未定义等】。

  • 反汇编的主窗口:显示反汇编的结果、控制流图等,可以进行拖动、选择等操作

  • 函数窗口:显示所有的函数名称和地址【拖动下方滚动条即可查看】,通过Ctrl+F组合进行筛选。

  • 输出窗口:显示运行过程中 IDA 的日志,也可以在下方的输入框中输入命令并执行。

  • 状态指示器:显示为“AU:idle”即代表IDA已经完成了对程序的自动化分析。

在这里插入图片描述

  1. 选项卡顶部 IDA 用不同的颜色区分可执行程序组成部分。下方对不同颜色
    代表的部分进行说明。例如,灰色代表.data sectio【数据】,如果点击颜色
    条灰色部分,下方的图形视图也会跳转到该部分中点击地址的位置。粉色部分是
    External Symbol【外部符号】或者 idata section。蓝色部分表示 code section【代码】中识别出的函数。

  2. IDA 界面底部有一个交互栏可以执行 Python 命令,能够帮助我们快速进行进制转换。

    在这里插入图片描述
    在 Python 交互中输入 0x45,由于开头的 0x 将会被解释为十六进制数。直接按回车可将 0x45 转换为十进制数,输出结果为 69
    在这里插入图片描述

    将十进制转换为十六进制数,可以使用 hex()函数。
    Bin()函数将其他进制的数字转换为二进制数。输出结果是 1000101,开
    头的 0b 代表这是一个二进制数。
    在这里插入图片描述

常用快捷键

IDA中的快捷键都是和菜单栏的各个功能选项一一对应的,基本上你只要能在菜单栏上找到某个功能,也就能看到相应的快捷键,这里记录几个常用的:

a:将数据转换为字符串
f5:一键反汇编
esc:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)
shift+f12:可以打开string窗口,一键找出所有的字符串,右击setup,还能对窗口的属性进行设置
ctrl+w:保存ida数据库
ctrl+s:选择某个数据段,直接进行跳转 ctrl+鼠标滚轮:能够调节流程视图的大小
x:对着某个函数、变量按该快捷键,可以查看它的交叉引用
g:直接跳转到某个地址
n:更改变量的名称
y:更改变量的类型
/:在反编译后伪代码的界面中写下注释
\:在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述,有时候变量特别多的时候隐藏掉类型描述看起来会轻松很多
:在反汇编后的界面中写下注释
ctrl+shift+w:拍摄IDA快照
u:undefine,取消定义函数、代码、数据的定义

操作概述

函数操作

  • 删除函数:函数窗口中选中函数后,按 Delete
  • 定义函数:在反汇编窗口选中对应行后,按P键
  • 修改函数参数:在函数窗口中选中并按 Ctrl+E 组合键,或在反汇编窗口的函数内部按 Alt+P 组合键

数据类型操作

  1. U 键:取消一个地方已有的数据
  2. D 键:让某一个位置变成数据
  3. C 键:让某一个位置变成指令
  4. A 键:会以该位置为起点定义一个以“\0”结尾的字符串类型
  5. * 键:此处定义为一个数组
  6. O 键:将此处定义为一个地址偏移

导航操作

  • 后退到上一位置:Esc
  • 前进到下一位置:Ctrl+Enter
  • 跳转到某一个特定位置:G,然后可以输入地址/已经定义的名称
  • 跳转到某一区段:Ctrl+S,然后选择区段即可

类型操作

IDA 开发了一套类型分析系统,用来处理 C/C++语言的各种数据类型【函数声明、变量声明、结构体声明等】,并且允许用户自由指定。选中变量、函数后按 Y 键,弹出 “Please enter the type declaration”对话框,从中输入正确的 C 语言类型,IDA 就可以解析并自动应用这个类型。

在这里插入图片描述

关闭数据库

在这里插入图片描述

  1. dont pack database【不打包数据库】:仅刷新4个数据库,不创建idb文件
  2. pack database【打包数据库】:将4个数据库组件文件存到idb文件中
  3. pack database 【打包数据库,压缩】:等同于上一个,压缩到idb归档
  4. collect garbage【收集垃圾】:在关闭数据库之前,删除没有的内存页面
  5. dont save the database【不保存数据库】:删除四个数据库组件文件,保留现有未经修改idb文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDA详细使用教程 的相关文章

  • 【Tools系列】IDA远程调试Linux文件

    Date 2023 4 28 文章目录 1 工具安装 2 IDA linux server 参考 1 工具安装 IDA Pro 7 2 2 IDA linux server 1 进入到IDA的安装目录 找到文件夹 dbgsrv 其中有两个文
  • 静态分析:IDA逆向代码段说明 text、idata、rdata、data

    通常IDA对一个PE文件逆向出来的代码中 xff0c 存在四个最基本的段text idata rdata data xff0c 四个段为PE文件的结构中对应的段 一 text段 xff1a 该段位程序代码段 xff0c 在该段一开始就可以看
  • [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • protobuf 黑盒调用 blackboxprotobuf 不用proto文件 application/x-protobuf 超短保姆级教程

    看了网上很多教程使用blackboxprotobuf 有一个小坑 在复制protobuf到代码里面的时候 应该转成hex或者base64 在代码里面转码 这样才能出数据 JS逆向 Protobuf逆向解析 装上blackboxprotobu
  • 恶意代码分析实战 --- 第三章 动态分析基础技术

    Lab 3 1 1 找出恶意代码的导入函数与字符串列表 导入函数只有一个ExitProcess 可能被加壳了 字符串存在两个注册表 1个url 还有1个PE文件名 2 这个恶意代码在主机上的感染迹象特征是什么 3 这个恶意代码是否存在一些有
  • IDA调试小技巧

    IDA脚本 MakeNameEX IDA官方链接 实际运用 MakeNameEX MakeNameEx long ea string name long flags SN CHECK ea linear address name new n
  • 逆向分析学习入门教程

    转在于 逆向工厂 一 从hello world开始 前沿 从本篇起 逆向工厂带大家从程序起源讲起 领略计算机程序逆向技术 了解程序的运行机制 逆向通用技术手段和软件保护技术 更加深入地去探索逆向的魅力 一 程序如何诞生 1951年4月开始在
  • [安全攻防进阶篇] 八.那些年的熊猫烧香及PE病毒行为机理分析

    如果你想成为一名逆向分析或恶意代码检测工程师 或者对系统安全非常感兴趣 就必须要认真分析一些恶意样本 熊猫烧香病毒就是一款非常具有代表性的病毒 当年造成了非常大的影响 并且也有一定技术手段 本文将详细讲解熊猫烧香的行为机理 并通过软件对其功
  • [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 浅谈逆向——静态分析简介(静态分析1)

    浅谈逆向 IDA简介 IDA PRO IDA反汇编选项配置 IDA界面简介 交叉参考 参考重命名 标签 创建函数 代码和数据的转换 IDA 对简单结构的处理 IDA对复杂结构的处理 IDA调试器 IDA PRO IDA是按照区块装载PE文件
  • 初识IDA工具

    工具 IDA工具 链接 https pan baidu com s 1Zgzpws6l2M5j1wkCZHrffw 提取码 ruyu 里面有安装密码 PassWord qY2jts9hEJGy 里面分析32位和64位启动快捷方式 打开IDA
  • IDA反汇编之栈帧例释

    目录 1 例释环境和预备知识 1 1 运行环境 1 2 IDA版本 1 3 预备知识 2 函数调用约定 3 函数局部变量布局 4 函数栈帧示例 5 IDA栈视图 1 例释环境和预备知识 1 1 运行环境 本示例运行环境为Windows 10
  • ARM汇编指令转为c源码

    TODO
  • 0.IDA-基本操作

    打开IDA 拖拽一个EXE文件进去 首先会弹出如下窗口 Kernel option1 Kernel option2 Processor option这三个选项会控制反汇编引擎的工作状态 一般按默认即可 大多数情况下 分析选项的默认值在准确性
  • Visual Stdio调试IDAPython脚本

    1 安装VS插件PTVS 这一步与第2步中安装版本应该一致 否则最后调试时会连不上 https github com Microsoft PTVS 2 安装python模块PTVSD pip install ptvsd 3 写如下代码ptv
  • [系统安全] 五十三.DataCon竞赛 (2)2022年DataCon涉网分析之恶意样本IOC自动化提取详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • idapython常用api记录7.0

    2019 02 13 idapython常用api记录 以下代码片段可以在ida的output窗口中测试用 需要引入相关的模块即可 import idaapi import idc import idautils 后续需要使用的程序代码指令
  • 手动修改 C++ 名称

    我正在写一个脚本IDA ProPython 中的反汇编器使用idapython插入 使用它 我能够填补 IDA 自动分析的不足之处 让我困惑的一个领域是用 漂亮的名字 因为缺乏更好的术语 来命名位置 功能 我的意思的一个例子如下所示 ida
  • CS:覆盖对 IDA 输出中的全局变量的访问,例如 mov eax、cs:x?

    我正在编写简单的程序然后分析它们 今天我写了这个 include
  • PE - 区分数据和函数导出

    我正在尝试找到一种方法来确定 IDA 中哪些导出是数据导出 哪些是实际函数导出 For example let s have a look at Microsoft s msftedit dll s export entries While

随机推荐

  • Python简要复习

    Python程序设计复习 Python基础知识 python的特点 兼具编译型和解释型特性 兼顾过程式 函数式和面向对象编程范式的通用编程语言 解释型语言无需像编译型需要一次性的编译成机器码 然后运行 而是由名叫解释器的程序动态的将源代码逐
  • 快手登录不上去 显示服务器繁忙,快手登录失败怎么回事

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 快手登录失败的原因 1 可能是登录环境不太安全 2 可能是新手机的原因 3 可能是长期未登录或者是异地登录 4 可能是账号存在被盗风险或者已经被其他人登录了 建议修改密码
  • JAVA注解实现@WebServlet(一)

    JAVA注解实现 WebServlet 提示 需要些反射和文件操作 文章目录 JAVA注解实现 WebServlet 前言 一 创建注解RequestMapping 二 创建一个继承HttpServlet的类 三 创建过滤器 总结 前言 在
  • mysql invalid uuid_我为什么不建议开发中使用UUID作为MySQL的主键

    我是少侠露飞 学习塑造人生 技术改变世界 引言 我在之前一篇博客专门介绍了MySQL聚簇索引和非聚簇索引 附传送门 享学MySQL 系列 MySQL索引的数据结构 索引种类及聚簇索引和非聚簇索引 简单来说 就是我们设计表的时候 基本都会人为
  • 【linux kernel】linux中断管理—软中断

    linux中断管理 软中断 一 简介 软中断是linux预留给系统中对时间要求最为严苛和最重要的中断下半部使用的 并且 驱动中只有一些对时间极其敏感的模块使用了 例如 块设备和网络子系统 linux系统中定义了几种软中断类型 如下所示 in
  • 面试题:连续子数组的最大和与循环列表中的子数组最大和

    一 连续子数组的最大和 LeetCode 53 Maximum Subarray 题意 给定一个整数数组 nums 找到一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 定义dp i 为前i个数中的连续子数组的最大和 状态转
  • Jenkins+SonarQube 代码质量检测详解

    一 SonarQube 概述 1 SonarQube 简介 Sonar Qube是一个开源的代码分析平台 支持Java Python PHP JavaScript CSS等25种以上的语言 可以检测出重复代码 代码漏洞 代码规范和安全性漏洞
  • HTTP基础知识(用一万字帮助你入门)

    HTTP中文意思是超文本传输协议 它可以承载的内容有很多像html web Api css js等等 入门HTTP 一 初识 1 1背景知识 二 协议分析 2 1http的发展历程 2 2状态码 2 3缓存 2 4HTTP 2概述 2 5H
  • 利用Python实现黑客帝国代码雨,打造属于自己的黑客帝国

    导语 看安全类文章的时候 发现文章前面经常会加个代码雨的特效图 感觉拿来用python实现一下当成一个小案例还是不错的 让我们愉快地开始吧 开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些python自带的模块
  • 计算机打印错误,打印机错误正在打印处理方法,详细教您电脑打印机错误正在打印处理方法...

    打印机 是办公常见的打印设备 平时需要打印表格 订单什么的 但是有的时候打印东西会提示 正在打印打印错误 但是打印机连接完好 驱动也安装正确 这是怎么回事呢 下面 小编就教大家如何去解决打印机出现正在打印处理方法 如今在办公室中电脑和打印机
  • CVE-2021-3156 sudo堆溢出 漏洞分析

    漏洞简介 sudo 是 linux 系统管理指令 是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具 它允许授权用户以 root 权限执行命令或者程序 sudo 的 sudoer 插件里面存在一个堆溢出漏洞 攻击者可以利
  • Java异步执行代码块,史上最简单的异步执行!!!

    声明 private static final ExecutorService executor Executors newCachedThreadPool new ThreadFactory int i 0 Override public
  • Git命令使用教程

    git文件提交大致流程 本地文件 git add 文件名 暂存区 git commit m 提交信息 本地仓库 git push 远程仓库地址 复制的 分支名称 要推送的分支名称 远程仓库 github git操作详细流程 1 先配置提交人
  • Unity导入google.protobuf失败,无法找到google命名空间

    问题 1 刚开始把protobuf的文件夹直接从其他项目里 unity2021 里复制到unity 2020 版本 当时报错protobuf dll的依赖项system memory版本不对 2 没有使用原来的protobuf文件了 使用v
  • Qt 第29课、主窗口中的状态栏

    1 主窗口中的状态栏 状态栏的概念和意义 状态栏是应用程序中输出简要信息的区域 状态栏一般位于主窗口的最底部 状态栏的消息类型 实时消息 如 当前程序状态 永久消息 如 程序版本号 机构名称 进度消息 如 进度条提示 百分比提示 在 Qt
  • 【Spring] Spring boot 报错 Unable to start ServletWebServerApplicationContext due to missing ServletWe

    1 概述 spring 报错如下 Error starting ApplicationContext To display the conditions report re run your application with debug e
  • 基于zookeeper的MySQL主主负载均衡的简单实现

    基于zookeeper的MySQL主主负载均衡的简单实现 1 先上原理图 2 说明 两个mysql采用主主同步的方式进行部署 在安装mysql的服务器上安装客户端 目前是这么做 以后想在zookeeper扩展集成 客户端实时监控mysql应
  • hot编码 字符one_笔记1 one-hot、embedding

    one hot 在特征工程中需要对数据进行预处理 one hot在数据预处理中比较常见 1 什么是one hot One Hot编码 又称为一位有效编码 主要是采用N位状态寄存器来对N个状态进行编码 每个状态都由他独立的寄存器位 并且在任意
  • java 16进制字符串转16进制

    author j public class Test public static void main String args byte b HexString2Bytes AA020155 String s Bytes2HexString
  • IDA详细使用教程

    文章目录 软件介绍 目录结构 启动页面 IDA文件加载 界面介绍 常用快捷键 操作概述 函数操作 数据类型操作 导航操作 类型操作 关闭数据库 软件介绍 Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器 而 I