【Frida】【Android】01_手把手教你环境搭建

news2024/11/18 3:49:32

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 1️⃣ 环境搭建
      • 安装Android模拟器
      • 安装Frida CLI
      • 安装Frida Server
      • 端口重定向:`adb forward`
    • 2️⃣ 运行测试
      • `spwan`模式
      • `attach`模式
      • 直接加载脚本
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期2024-03-24
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.11.0

1️⃣ 环境搭建

注意:我们首先确定使用的各种版本,参考上面的《开发环境》。

安装Android模拟器

为了方便后续学习,这里使用夜神模拟器7.0.5.8做为目标系统,安装Android9系统,如下图所示:
在这里插入图片描述

我们需要注意:

  • 为了避免使用中的各种问题,我们开启Android的root权限
  • nox_adb.exe是夜神自带的adb,我们复制一份,并命名为adb.exe
  • 保证全局只有一个adb.exe,多个版本adb会导致不同软件同时使用时,出现各种异常。
    在这里插入图片描述

安装Frida CLI

这里以常见的Python方式进行安装。

方式一:objection
objection是基于frida的三方工具,包含了很多方便的功能。
之前听说objection跟frida有版本冲突,但是直接安装objection,就可以顺便安装frida相关工具,避免冲突问题,所以我们直接执行pip install objection即可。版本列表如下图所示:
在这里插入图片描述

方式二:frida-tools
这种方式是官方提供的方式,直接执行pip install frida-tools,需要注意与objection版本的冲突问题。

ps: 除了python方式,我们还可以使用node方式,执行命令npm install -g frida-tools

安装Frida Server

由于上小节中,我们使用的frida版本是16.2.1,在开发机器上下载适用于Android设备的Frida Server版本,下载地址为:https://github.com/frida/frida/releases/tag/16.2.1。
下载前,我们需要先通过adb命令查看系统的架构。执行命令adb shell getprop ro.product.cpu.abi,可以看到,架构是x86_64
在这里插入图片描述
所以,我们需要下载frida-server-16.2.1-android-x86_64.xz
在这里插入图片描述

接着,我们需要连接Android设备到计算机,并使用adb将Frida Server推送到设备上:

# fs就是frida-server的缩写
adb push frida-server-16.2.1-android-x86_64 /data/local/tmp/fs

最后,在设备上通过adb shell,运行Frida Server:

adb shell
cd /data/local/tmp/
chmod +x fs
./frida-server &

端口重定向:adb forward

使用adb端口转发将本地端口与Android设备上运行的Frida Server端口连接起来:

adb forward tcp:27042 tcp:27042

2️⃣ 运行测试

Frida操作App的方式有两种。
第一种是spwan模式,简而言之就是将启动App的权利交由Frida来控制。采用这个模式时,即使目标App已经启动,在使用Frida注入程序时还是会重新启动App。在CLI模式中,Frida通过加上-f参数指定包名以spwan模式操作App。
第二种是attach模式,建立在目标App已经启动的情况下,Frida通过ptrace注入程序从而执行Hook的操作。在CLI模式中,Frida通过加上-N参数指定包名以attach模式注入App。

下面我们以系统自带的设置工具(包名为com.android.settings)为例,进行测试。

ps: 旧的frida版本,不添加任何参数,则默认会通过attach模式注入App。

spwan模式

spwan模式会自己启动目标软件com.android.settings,所以我们不必启动该软件,直接执行frida.exe -U -f com.android.settings即可。
运行后,我们执行js命令,打印[*] 开始执行 Hello World
在这里插入图片描述

Java.perform(function() {
  console.log("[*] 开始执行 Hello World");
});

attach模式

该模式不会启动目标进程,当进程不存在的时候,直接执行frida.exe -U -N com.android.settings会报下面的错误:
在这里插入图片描述

只有按照下面的步骤启动设置后,再执行frida.exe -U -N com.android.settings才能附加到进程上,然后进行交互。
在这里插入图片描述
在这里插入图片描述

直接加载脚本

通常,我们会编写脚本,然后直接加载脚本,方便测试。
frida.exe -U -l .\01_手把手教你环境搭建\index.js -N com.android.settings
效果如下:
在这里插入图片描述

📖 参考资料

  • frida 常见问题和报错https://crifan.github.io/reverse_debug_frida/website/summary_note/common_issue/
  • objection地址:https://github.com/sensepost/objection

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

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

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

相关文章

鸿蒙Harmony应用开发—ArkTS-类型定义

说明: 本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 Resource 资源引用类型,用于设置组件属性的值。 可以通过$r或者$rawfile创建Resource类型对象,不可以修改Res…

MySQL学习笔记------SQL(2)

ziduanSQL DML 全称为:Data Manipulation Language,用来对数据库中表的数据记录进行增删改操作 插入数据 添加数据(INSERT) 给指定字段添加数据:INSERT INTO 表名(字段名1,字段名2,......…

Gogs - 一款极易搭建的自助 Git 服务

Gogs - 一款极易搭建的自助 Git 服务 1. 使用文档References Gogs https://gogs.io/ https://github.com/gogs/gogs Gogs (/gɑgz/) 项目旨在打造一个以最简便的方式搭建简单、稳定和可扩展的自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并…

基于SSM的NEUQ宿舍管理系统的设计与实现

基于SSM的NEUQ宿舍管理系统的设计与实现 获取源码——》公主号:计算机专业毕设大全 获取源码——》公主号:计算机专业毕设大全

【计算机网络实践】Cisco Packet Tracer局域网组网(FTP服务器通过交换机连接客户端)

本文为应对计算机网络第一次实验所写的预习报告 一、实验准备 一台装有Cisco Packet Tracer的PC机,一个大学生大脑。 二、了解FTP和Cisco Packet Tracer 具体内容可在百度搜索,在物理机上用FileZilla Server实现ftp可参看我前面的文章。Cisco Packet Tr…

C#绘制面形图

创建windows窗体应用 ,从工具箱添加Button和Panel using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Fo…

再仔细品品Elasticsearch的向量检索

我在es一开始有向量检索,就开始关注这方面内容了。特别是在8.X之后的版本,更是如此。我也已经把它应用在亿级的生产环境中,用于多模态检索和语义检索,以及RAG相关。 也做过很多的优化:ES 8.x 向量检索性能测试 & 把…

Vue3 上手笔记

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n 经历了:4800次提交、40个RFC、600次PR、300贡献者 官方发版地址:Release v3.0.0 One Piece vuejs/core 截止2023年10月,最…

网络行为管理系统招标模板

项目名称:网络行为管理系统招标 一、项目背景 随着信息技术的迅猛发展,网络安全和数据保护已成为企业和组织面临的关键挑战。为了确保网络环境的安全、合规,并实现对网络行为的有效管理和审计,我们特此启动网络行为管理系统的招…

Linux系统下——PS1、PS2、PS3、PS4变量详解

目录 前言 一、PS1变量 1.PS1变量详解 2.PS1变量可用参数 3.彩色提示符 二、PS2变量 三、PS3变量 1.不使用PS3变量 2.使用PS3变量 四、PS4变量 前言 在Linux系统中,PS1、PS2、PS3和PS4是特定的环境变量,它们各自在控制提示符和菜单提示信息…

【算法每日一练]

目录 今日知识点: 辗转相减法化下三角求行列式 组合数动态规划打表 约数个数等于质因数的次方1的乘积 求一个模数 将n个不同的球放入r个不同的盒子:f[i][j]f[i-1][j-1]f[i-1][j]*j 将n个不同的球放入r个相同的盒子:a[i][j]a[i-j][j]a[…

[AIGC] Redis基础命令集详细介绍

Redis是一个强大的开源的键-值存储系统,被广泛应用于各种应用程序中。在使用Redis时,我们需要掌握一些基本的Redis命令来操作存储在其上的数据。这篇文章将向你介绍一些基本的Redis命令,让你能够更好地使用和理解Redis。 文章目录 启动Redis…

手撕算法-删除有序数组中的重复项

描述 很简单,就是,遇到重复的,只留一个,保存在数组的左半边。如:[0,0,1,1,1,2,2,3,3,4]变为[0,1,2,3,4] 分析 使用双指针。slow指针代表没重复的数应该放置的位置,fast表示遍历的不重复数字的位置&…

C++中,数字以0开头,会默认八进制,不是十进制

代码1 以下代码&#xff1a; #include <iostream>using namespace std;int main(){uint8_t a 0101;int b (int)(a);cout<<b<<endl;}结果输出&#xff1a; 代码2 如果改为&#xff1a; #include <iostream>using namespace std;int main(){uint8_…

【新版】系统架构设计师 - 新版架构备考索引<附2023年11月原题回忆>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 新版架构备考索引机考详情备考索引与方向&#xff08;个人观点&#xff0c;仅供参考&#xff09;总结附&#xff1a;2023年11月改版机试原题简单回忆 架构 - 新版架构备考索引 首先&#xff0c;此…

知识图表示学习中的负抽样研究综述

摘要 知识图表示学习(KGRL)或知识图嵌入(KGE)在知识构建和信息探索的人工智能应用中起着至关重要的作用。这些模型旨在将知识图中的实体和关系编码到低维向量空间中。在KGE模型的训练过程中&#xff0c;使用正样本和负样本是区分的必要条件。然而&#xff0c;直接从现有的知识…

Unity基础框架

公共模块 单例基类 如果有很多个这样的单例模式对象,创建他们时都要重复的写单例模式代码。那么能不能利用泛型来减少这部分重复的工作量呢。 单例模式基类,最简单的写法 继承MonoBehaviour的单例基类 所以需要做一些改进 获取单例时如果为空,创建一个名字一样的物体,挂…

如何在C语言中使用命令行参数

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

树的遍历方式DFS和BFS

DFS(depth first search) 深度优先遍历 从图中一个未访问的顶点V开始&#xff0c;沿着一条路一直走到底&#xff0c;然后从这条路尽头的节点回退到上一个节点&#xff0c;再从另一条路走到底…不断递归重复这个过程&#xff0c;直到所有的顶点都遍历完成。前序遍历&#xff0c…

高可用、逻辑保护、容灾、多活、妥协、流程

可用性三叉戟&#xff1a; 本地高可用性&#xff1a;消除单点故障&#xff0c;确保链路所有环节系统高可用 本地是指&#xff1a;针对生产中心的内部故障 故障类型&#xff1a;服务器、硬盘、适配器卡、网络 特点&#xff1a;快速恢复、自动的接管、实施简单 RPO-0 业务逻辑保护…