IDA详细使用教程,原创适合逆向新手的实验报告,关于快捷键,界面展示等的介绍,推荐大家结合另一篇ida实操,文章食用。切实感受ida的魅力与强大。

一、软件介绍

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

IDA Pro 的主要优点是它允许以交互方式更改显示数据的任何元素:

给函数、变量、数据结构等命名。

更改数据表示(如数字、各种编码的字符串、数据结构)

搭建图表和代码流程图,简化对反汇编代码的理解

使用c++中有关函数参数和结构定义的类型信息,以便自动命名参数和变量

自动识别和命名汇编代码中的标准库函数

所谓工欲善其事必先利其器。所以必定需要先熟悉逆向中最常用的工具。而IDA pro则是被公认为最好的花钱可以买到的逆向工程利器。当然现在对我来说是肯定买不起的,所以我用的是破解版,先熟悉一下ida的基本操作。

二、软件运行

在ida安装完成后,在桌面上会有两 个图标。其中idaq.exe负责反编译32位可执行文件,idap64.exe负责反编译64位可执行文件。点击运行idaq之后用户便可选择加载可执行文件的方式。

直接运行ida,会展示这个界面。“New”选项表明反编译新可执行文件,“Go”选项表明直接进入主界面,“Previous”选项表明加载已反编译的文件选项。其中previous会给出给出之前逆向过的文件,如图就是我之前一段时间分析过的一些文件。

直接进入就是IDA主要功能界面,IDA支持直接将文件拖入界面所在的区域中。

例如我打开的是我们期末上机考试系统的客户端。ida可识别当前玩家加载的可执行文件类型,已识别出文件为PE可执行文件格式。下面“Processor type”选项表明当前处理器类型,IDA能够识别的文件类型可依照IDA默认选项加载可执行文件,如果IDA不能识别的二进制代码,例如ShellCode代码,可选择“Binary file”方式加载,选择“Binary file”方式加载。

一旦选择“Binary file”方式加载文件,则需要用户手动填入加载段地址和相对偏移,对应上图“Loading segment”和”Loading offset”选项。该种方式主要应用场景为:分析动态保存的二进制代码、ShellCode二进制代码分析等。选择“Binary file”方式加载文件,IDA不会自动分析代码,用户需根据具体需求自行反汇编二进制代码。

Processor Type:可以指定在反汇编过程中使用的处理器模块。多数情况,IDA将从可执行文件的头中读取到信息,选择合适的处理器。

kernel options:配置特定反汇编分析选项,IDA可利用这些选项该进递归下降过程。通常ida默认的都是最优的。

processor options:选择适用于处理器模块的配置选项。


三、界面简介

进行逆向分析之前需了解IDA界面有哪些功能,包括:导航条、反汇编窗口、其他辅助分析窗口。这是我自己简单制作的一张图,虽然不够全面,但希望能帮助理解。

1)导航条IDA

主界面中存在一项颜色各异的导航条。通过导航条可了解分析可执行文件各部分数据分布情况,各种颜色代表含义如下:

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

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

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

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

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

以上基于IDA默认设置介绍各种颜色在导航条的含义,IDA同时提供了颜色设置,方便用户根据需求选择合适的颜色,对应“Options”菜单的“Colors”选项中,对应选项如下图所示:

可在“IDA Colors”对话框的选择“Navigation band”Table项,在对应选项中设置各项数据的颜色,方便实际场景的分析。

2)反汇编窗口

反汇编窗口属于逆向分析过程中关注频率最高的窗口,通过此窗口可以逆向分析反汇编代码,移动端中分析频率最高的属于Arm指令集,包括:Arm 32为指令集(常用语Android平台Native层反汇编代码分析)、Thumb 16位指令集(常用于IOS平台32位Mach-O文件的反汇编代码分析)、Arm 64位指令集(常用于IOS平台64位Mach-O文件的反汇编代码分析)。反汇编窗口属于“IDA View-A”标签项内容。反汇编窗口可分为两种模式,分别为:默认模式和图形模式。

3)其他辅助分析窗口

除了提供反汇编分析窗口,IDA默认界面提供二进制查看编辑窗口、函数窗口、结构窗口、枚举类型窗口、导入函数窗口、导出函数窗口。不同窗口在分析阶段起到不同作用。下面介绍其他辅助分析窗口功能的应用场景。

二进制窗口可支持用户查看可执行文件对应相对偏移的二进制机器码数据,二进制查看窗口对应“Hex View-1”选项内容。

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

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

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

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

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

函数窗口

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

结构窗口(Structures)

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

导入函数窗口(Imports)

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

导出函数窗口(Exports)

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


IDA分析可执行文件

IDA会对可识别的文件进行代码反编译,反编译过程依据文件大小而定。IDA软件会利用回归方式递进分析可执行文件反汇编代码。判断IDA分析完毕的三种方法分别为:

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

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

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

四、常用快捷键

空格键:反汇编窗口切换文本跟图形

Esc:在反汇编窗口中使用为后退到上个操作的地址处

Shift +F5:打开签名窗口

shift+F12:自动分析出参考字符串

ALT+T:搜索字符串(文本搜索)

ALT+L:标记(Lable)

ALT+M:设置标签(mark)

ALT+G:转换局部变量为结构体

ALT+Enter:跳转到新的窗口

Alt+B:快捷键用于搜索十六进制字节序列,通常在分析过程中可以用来搜索opcode

CTRL+M:列举出当前已经添加的标签

CTRL+S列举出二进制程序的段的开始地址、结束地址、权限等信息

F9:动态调试程序(其实IDA主要用作静态分析用的)

F5:将一个函数逆向出来(生成c伪代码)

G:跳转到指定地址

A:将选择的信息转换成ASCII(转换成可读性跟强的字符串)

X(ctrl+X):交叉引用,类似于OD中的栈回溯操作

N:对符号重命名

:&;(冒号&分号):光标所在位置添加常规注释和可重复注释

P:创建函数

T:解析结构体偏移

M:转换为枚举类型常量

Y:设置变量类型

H:转换16进制

C:光标所在地址处的内容解析成代码

D:光标所在地址处的内容解析成数据

A:光标所在地址处的内容解析成ascll码字符串

U:光标所在地址处的内容解析成未定义内容。

IDA详细使用教程,适合逆向新手的实验报告相关推荐

  1. 网吧服务器系统ghost,Ghost网络克隆详细步骤教程(适合网吧使用

    <Ghost网络克隆详细步骤教程(适合网吧使用>由会员分享,可在线阅读,更多相关<Ghost网络克隆详细步骤教程(适合网吧使用(6页珍藏版)>请在人人文库网上搜索. 1.Gho ...

  2. java详细安装教程(供新手参考)一一java(jdk)安装

    一.java历史简介 1991 年Sun公司的James Gosling等人开始开发名称为 Oak (橡树)的语言.希望用于控制嵌入在有线电视交换盒.PDA等的微处理器, 1994年将Oak语言更名为 ...

  3. 群晖系统如何布置php_群晖安装官方zblog详细图文教程(适合小白)

    简介 Z-Blog和Z-BlogPHP,既是博客程序,也是CMS建站系统.和Wordpress一样,利用Zblog我们也可以搭建各式各样的网站,这里我们就教大家如何通过群晖安装官方的Zblog程序. ...

  4. 三分钟完成虚拟机联网 小白看了都说好!!! 虚拟机超详细联网教程/步骤 SDN软件定义网络实验

    只需三步,无需任何代码,全部是可视化操作!!! 当然,前提是你的电脑要有网哦(没网也看不到这篇博客啊喂!) 演示:Ubuntu18.04 1.打开虚拟网络编辑器 (1)点击"编辑" ...

  5. 强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)

    文章目录 引言 一.分析文件类型 二.初步分析 1 运行情况 2 IDA初步分析 三.详细分析 1 sub_13F3函数分析 2 查找蛛丝马迹 (1)mprotect (2)重写unk_2010 3 ...

  6. 基于阿里云服务器ECS和宝塔面板,适合初学者的蚂蚁笔记(Leanote)超详细配置教程(但是真的不好用)

    文章目录 前言 环境准备 蚂蚁笔记(Leanote)介绍 一.设置安全组.配置规则 二.安装 Leanote 二进制版 三.安装MongoDB 四.导入Leanote初始数据 五.配置 Leanote ...

  7. 最明白的Unity3D手机平台分辨率自动匹配教程-适合新手

    在网上搜了好多资料关于如何自适应各种繁杂平台的手机屏幕分辨率,找到了一个关键词UIRoot,于是乎去下载了NGUI插件,这是一个Unity3D上开发2D游戏最好的插件了. 教程环境:Unity4.5. ...

  8. 靶机DC-8(详细渗透,适合新手渗透)

    目录 靶机DC-8 (详细渗透,适合新手渗透) 0x01靶机描述 0x02环境搭建 1. 下载并导入靶机 2. 查看网络适配器 3. 启动靶机 0x03靶机渗透 一. 信息收集 1. 主机发现 2. ...

  9. react安装_超全面详细一条龙教程!从零搭建React项目全家桶(上篇)

    React是近几年来前端项目开发非常火的一个框架,其背景是Facebook团队的技术支持,市场占有率也很高.很多初学者纠结一开始是学react还是vue.个人觉得,有时间的话,最好两个都掌握一下.从学 ...

最新文章

  1. TensorFlow AI 新品更易用!联手NVIDIA,支持Swift和JavaScript
  2. 解读:为何在今年的淘宝造物节上!AR直播火到如此程度?
  3. Java四种引用简介
  4. win这个傻逼系统,高PPI上默认的情况下是放大的,放大了之后逻辑分辨率不跟着放大。
  5. php语法大全下载,PHP下载文件
  6. php xingnengfenxi_PHP 性能分析与实验:性能的微观分析
  7. docker如何实现重新打tag并删除原tag的镜像([仓库名: tag] 可以查询到指定id的镜像,同一个id镜像能有多个[仓库名: tag])(增加\删除镜像仓库:标签)
  8. qbuttongroup如何都不选中_全程马拉松,半程马拉松该如何跑?很多人都不知道这些细节...
  9. Vue入门---- vue-router
  10. 攻城掠地sdk服务器没有响应,攻城掠地没落的原因及对策
  11. android 退出代码
  12. 【TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】
  13. [LeetCode] Best Time to Buy and Sell Stock
  14. zlog日志使用说明
  15. PHPWAMP开启SSL,PHPWAMP配置ssl证书
  16. excel求回归直线方程的公式_求回归直线方程的三种方法
  17. 误差柱状图的三种实现方法
  18. JS格式化输出常用格式
  19. pid控制温度c语言,C语言编写PID温度控制程序
  20. Arcgis Engine10.2安装包和安装教程

热门文章

  1. 第六部分 项目成本管理
  2. Po.et正式推出为出版商打造的API层应用—Frost
  3. 【数学建模】2019A题 高压油管的压力控制器(附带优秀论文资源文档下载)
  4. Teams下载安装教程
  5. BS EN 438-5装饰用薄板材层压板材的分类和规范
  6. 如何获取最新的EI期刊杂志目录
  7. 银行卡信用卡号校验查询API接口
  8. 处理IRP的几种方式
  9. ibm是被联想收购了吗_联想的现状,让人不得不佩服当年IBM的老辣
  10. 解决ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务