[安卓逆向]IDA Pro的认识及使用

news2025/7/14 3:26:50

[安卓逆向]IDA Pro的认识及使用

软件介绍

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

目录结构

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

  • cfg:包含各种配置文件。其中有以下几个重要的配置文件:

    ida.cfg:基本IDA配置文件;idagui.cfg:GUI配置文件;idatui.cfg:文本模式用户界面配置文件;

  • dbgsrv:下面有用于调试的服务器端软件,选择设备合适的使用。

  • 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可以打开“最近用过的文件”列表中的一个文件。“最近用过的文件”列表中包含IDAwindows注册表项的history子项中的值。默认长度为10,可以编辑idagui.cfgidatui.cfg修改其值。

文件加载

new打开一个新so文件后会看到一个对话框,如下图所示:

在这里插入图片描述

  1. IDA会生成一个可能的文件类型列表,在顶部显示,它将显示最适合处理文件的加载器。
  2. Binary File(二进制文件) 是列表最后一个选项,会一直显示,是IDA加载无法识别文件的默认选项,提供最低级的加载方法。需要使用二进制加载器的情形包括:分析从网络数据包或日志文件中提取出来的rom镜像和破解程序负载。
  3. processor type【处理器类型】下拉菜单中,可以指定在反汇编过程中使用的处理器模块【在idaprocs目录中】。多数情况下,ida将根据可执行文件头中读取信息,选择合适的处理器。

界面介绍

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

    蓝色:表示常规的指令函数;黑色:节与节之间的间隙;银白色:数据内容;
    粉色:表示外部导入符号;暗黄色:表示ida未识别内容;

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

    IDA VIEW-A:三种反汇编视图,文本视图、图表视图、路径视图;HEX VIEW-1:十六进制窗口;
    Enums:枚举窗口;Struceures:结构体窗口;Imports:导入函数窗口;Exports:导出函数窗口;

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

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

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

在这里插入图片描述

常用快捷键

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

a键:将数据转换为字符串,会以该位置为起点定义一个以“\0”结尾的字符串类型。
c键:让某一个位置变成指令。
d键:让某一个位置变成数据。
g键:搜索地址和符号。
n键:对符号进行重命名。
o键:将此处定义为一个地址偏移。
P键:在反汇编窗口选中对应行后定义函数。
u键:undefine,取消定义函数、代码、数据的定义,取消一个地方已有的数据。
x键:对着某个函数、变量按该快捷键,可以查看它的交叉引用
y键:更改变量的类型
分号键:可重复注释
Ctrl+E:在函数窗口中选中修改函数参数;
Ctrl+F:在窗口中搜索内容;
Ctrl+M:查看标签
Ctrl+S:查看/选择跳转的段信息。
Ctrl+w:保存ida数据库
Ctrl+Enter:前进到下一位置视图
Alt+M:添加标签
Alt+T:搜索文本
Alt+B:搜索十六进制
Alt+P:在反汇编窗口的函数内部修改函数参数;
F2键:对函数某位置打断点。
F5键:一键反汇编,查看伪代码
F7:单步调试(进入函数)
F8:单步调试(不进入函数)
空格键:切换文本视图与图表视图
ESC键:后退到上一位置视图
Delete键:函数窗口中选中函数后,删除函数。
*键:此处定义为一个数组
/键:在反编译后伪代码的界面中写下注释
\键:在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述

操作概述

函数操作

  • 删除函数:函数窗口中选中函数后,按 Delete

  • 定义函数:在反汇编窗口选中对应行后,按P

  • 修改函数参数:在函数窗口中选中并按 Ctrl+E 组合键,或在反汇编窗口的函数内部按 Alt+P 组合键

数据类型操作

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

导航操作

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

关闭数据库

在这里插入图片描述

  • Don't pack database【不打包数据库】:仅刷新4个数据库,不创建idb文件;
  • pack database(Store)【打包数据库】:将4个数据库组件文件存到idb文件中;
  • pack database(Deflate)【打包数据库,压缩】:等同于上一个,压缩到idb归档;
  • collect garbage【收集垃圾】:在关闭数据库之前,删除没有的内存页面;
  • dont save the database【不保存数据库】:删除四个数据库组件文件,保留现有未经修改idb文件;

参考文章:

破解工具-IDA的认识及使用: https://blog.csdn.net/l17862868372/article/details/117429655

IDA详细使用教程: https://blog.csdn.net/m0_55854679/article/details/127746844

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指纹浏览器是什么?可以用来解决流量套利的什么问题?

套利是一个永远不会过期的形式,由于信息差永远存在,有信息差就有套利空间。流量套利是购买和转售流量的过程。套利专家通常通过购买廉价流量并以更好的价格出售来赚取收入。他们把流量导流到广告商的网站上,满足广告商希望客户访问自己的网站…

理解Linux权限(一)

理解Linux文件权限 Permission Groups(权限组) 根据权限组划分:每个文件和目录都有3种使用者(用户) ower(所有者) - 所有者的权限仅适用于文件和目录的所有者,不会影响其他用户的操作;group(所属组) - 所属组的权限仅适用于已分配的文件和…

Transwarp Inceptor介绍

Transwarp Inceptor是星环科技推出的用于数据仓库和交互式分析的大数据平台软件,它基于Hadoop和Spark技术平台打造,加上自主开发的创新功能组件,有效的解决了企业级大数据数据处理和分析的各种技术难题,帮助企业快速的构建和推广数…

进化吧,MySQL锁!无锁->偏向锁->轻量级锁->重量级锁(请自动脑补数码宝贝进化音)

写在前边 走到哪都有各种琐事,在MySQL中咱已经聊透了各种琐事 ->MySQL锁机制&&事务,今天来看看Java里边的锁升级过程,以及各种锁之间的比较,悲观乐观,粗化消除~ 四种锁的Markword 优先程度 偏向锁->轻量…

【FPGA】FPGA实现IIC协议读写EEPROM(三) ----- 汇总篇

IIC协议读写EEPROM一、功能分析/模块划分二、状态转移图1、EEPROM读写控制状态转移图2、IIC接口驱动状态转移图三、工程代码实现1、顶层模块2、EEPROM读写控制模块3、IIC接口驱动模块4、参数配置5、其他模块四、仿真测试五、上板验证写在前面 FPGA实现IIC协议读写EEPROM相关文章…

【附源码】计算机毕业设计JAVA教学辅助系统

项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven Vue 等等组成,B/…

【Qt】控件探幽——QWidget

注1:本系列文章使用的Qt版本为Qt 6.3.1 注2:本系列文章常规情况下不会直接贴出源码供复制,都以图片形式展示。所有代码,自己动手写一写,记忆更深刻。 本文目录探索QWidget1、ui文件最后会变成什么?2、如何改…

在 OpenHarmony 轻量设备开发应用

本文档旨在讲解新建 Helloworld 项目步骤、固件包烧录到 BES2600WM 开发板、实现 js 和 C 代码的通讯。该 Demo 重点体现的是 OpenAtom OpenHarmony(以下简称“OpenHarmony”) 3.1 Beta 系统轻量设备 js 和 C 的交互能力, 效果如图 &#xf…

dpdk PMD

PMD是Poll Mode Driver的缩写,即基于用户态的轮询机制的驱动 在不考虑vfio的情况下,PMD的结构图如下 虽然PMD是在用户态实现设备驱动,但还是依赖于内核提供的策略。其中uio模块,是内核提供的用户态驱动框架,而igb_uio…

深度探讨react-hooks实现原理

react hooks 实现 Hooks 解决了什么问题 在 React 的设计哲学中,简单的来说可以用下面这条公式来表示: UI f(data)等号的左边时 UI 代表的最终画出来的界面;等号的右边是一个函数,也就是我们写的 React 相关的代码&#xff1b…

最新最全面的Spring详解(一)——Spring概述与IOC容器

前言 本文为 【Spring】Spring概述与IOC容器 相关知识,下边将对Spring概述,IOC容器(包括:IOC概述、配置元数据、容器实例化与使用、Bean的概述、依赖注入 Dependency Injection、Bean 作用范围(作用域)、更…

计算机网络(二)

三、数据链路层 3.1 数据链路层概述 数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。 该层的作用包括:物理地址寻址…

安装Redis

一、Windows安装 1、下载安装包 2、下载完毕得到压缩包 3、解压到自己电脑上的环境目录 4、开启redis,双击运行服务 5、使用redis客户端来连接redis 注意:Window下使用确实简单,但是Redis推荐我们使用Linux去开发使用! 二、Linux安装 1、官网下载…

everything常用搜索命令

参考:玩转Everything(三) https://baijiahao.baidu.com/s?id1735662355311796969&wfrspider&forpc 可右键菜单显示要显示的内容 指定目录搜索 例:e: 文件名 (注意加空格) 多目录内搜索 例&#x…

ModStartCMS v5.2.0 字段扩展支持,SiteMap增强

系统介绍 ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰…

多肽914910-73-9:血管紧张素Angiotensin(1-12)(mouse, rat)

血管紧张素 (1-12) 是局部生成血管紧张素的潜在前体。它在广泛的器官和组织中表达,包括小肠、脾脏、肝脏、肾脏和心脏。卡托普利和 CV-11974(一种血管紧张素 II I 型受体拮抗剂)可消除对静脉输注血管紧张素 (1-12) 的血管收缩和升压反应。编号…

【Linux详解】——环境变量

📖 前言:本期将介绍Linux下的环境变量 目录🕒 1. 基本概念🕘 1.1 常见环境变量🕘 1.2 查看环境变量方法🕘 1.3 其他指令:🕘 1.4 环境变量的来源🕒 2. 环境变量的操作&…

2022亚太杯建模A题思路分析 小美赛数学建模 A题思路

一、 2022亚太杯大学生数学建模竞赛 注册截止日期:北京时间2022年11月23日(星期三)中午12点 竞赛开始时间:北京时间2022年11月24日(星期四)上午6点 竞赛结束时间:北京时间2022年11月28日&#…

OpenCV实战(2)——OpenCV核心数据结构

OpenCV实战(2)——OpenCV核心数据结构0. 前言1. cv::Mat 数据结构1.1 cv::Mat 简介1.2 cv::Mat 属性1.3 完整代码示例2. 探索 cv::Mat 数据结构2.1 cv::Mat 对象的创建2.2 OpenCV 输入和输出数组小结系列链接0. 前言 cv::Mat 类是用于保存图像(以及其他…

2022 SPSSPRO杯A|B|C题全网最全解题思路+数据分享

一,认证杯数学建模2022 ABC题干分析 2022年第十五届“SPSSPRO杯”数学中国数学建模网络挑战赛 2022认证杯数学中国数学建模网络挑战赛 认证杯这次叫spssrpo 二,A题 人员的紧急疏散 在过去的几十年里,由于大规模集会活动的数量和规模的增加…