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

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 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.mzph.cn/news/767582.shtml

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

相关文章

matlab空间曲线图形

说明:问题来自CSDN-问答板块,题主提问。 需求:如何用子图命令画出平面y2z,z2y与球面x^2y^2z^25相交的空间曲线图形。需要完整代码和结果的图片。 一、先看效果图 二、代码 % 创建figure figure% 创建二维网格,用于定…

day01_mysql数据类型和运算符_课后练习 - 参考答案

文章目录 day01_mysql_课后练习第1题第2题第3题第4题第5题 day01_mysql_课后练习 第1题 案例: 1、创建数据库day01_test01_library 2、创建表格books 字段名字段说明数据类型允许为空唯一b_id书编号int(11)否是b_name书名varchar(50)否否…

性能调优专题并发编程专题(持续更新)

一、性能调优专题 MySQL相关 一、深入理解MySQL索引底层数据结构与算法 索引概念:索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构: 1、二叉树 缺点:当索引字段有序的时候,不会自动平衡二叉树,数据…

【热门话题】ECMAScript vs JavaScript:理解两者间的联系与区别

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 ECMAScript vs JavaScript:理解两者间的联系与区别1. ECMAScript&am…

小目标检测常见解决策略总结

1. 引言 尽管目标检测算法取得了长足的发展,例如 Faster RCNN、YOLO、SSD、RetinaNet、EfficientDet 等。通常,这些模型是在 COCO数据集上训练的。它是一个包含各种对象类别和标注的大规模数据集,因此在训练对象检测器方面很受欢迎。然而&am…

应急响应实战笔记04Windows实战篇(1)

第1篇:FTP暴力破解 0x00 前言 ​ FTP是一个文件传输协议,用户通过FTP可从客户机程序向远程主机上传或下载文件,常用于网站代码维护、日常源码备份等。如果攻击者通过FTP匿名访问或者弱口令获取FTP权限,可直接上传webshell&#…

RuoYi-Vue-Plus(基础知识点jackson、mybatisplus、redis)

一、JacksonConfig 全局序列化反序列化配置 1.1yml中配置 #时区 spring.jackson.time-zoneGMT8 #日期格式 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss #默认转json的属性,这里设置为非空才转json spring.jackson.default-property-inclusionnon_null #设置属性…

直接插入排序(六大排序)

本期讲解排序与六大排序中的希尔排序 —————————————————————— 1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性…

win10开启了hyper-v,docker 启动还是报错 docker desktop windows hypervisor is not present

问题 在安装了docker windows版本后启动 docker报错docker desktop windows hypervisor is not present 解决措施 首先确认windows功能是否打开Hyper-v 勾选后重启,再次启动 启动后仍报这个错误,是Hyper-v没有设置成功 使用cmd禁用再启用 一.禁用h…

Activiti7学习大纲及环境-Activiti7从入门到专家(2)

学习大纲 入门系列 开发环境及源码编译流程设计器核心API简单流程示例启动与结束事件边界事件中间事件用户任务手动任务接受任务服务任务脚本任务业务规则任务排他网关并行网关包容网关事件网关子流程调用活动泳池泳道执行监听器任务监听器全局监听器真实业务流程 进阶系列 …

基于react native的自定义轮播图

基于react native的自定义轮播图 效果示例图示例代码 效果示例图 示例代码 import React, {useEffect, useRef, useState} from react; import {Animated,PanResponder,StyleSheet,Text,View,Dimensions, } from react-native; import {pxToPd} from ../../common/js/device;c…

序列化与反序列化介绍

文章目录 一、序列化与反序列化二、PHP反序列化漏洞成因三、JAVA反序列化 一、序列化与反序列化 在PHP语言开发层面上基本都是围绕着serialize(),unserialize()这两个函数。serialize()函数序列化对象后,可以很方便的将它传递给其他需要它的地方&#x…

存储器的层次结构和局部性原理

前言 大家好我是jiantaoyab,这是我所总结作为学习的笔记第19篇,在这里分享给大家,这篇文章讲存储器的一部分内容。 存储器的层次结构 SRAM 静态随机存取存储器的芯片,SRAM 之所以被称为“静态”存储器,是因为只要处…

用Springboot(java程序)访问Salesforce RestAPI

本文讲一下,如何从0构建一个Springboot的应用程序,并且和Salesforce系统集成,取得Salesforce里面的数据。 一、先在Salesforce上构建一个ConnectApp。 有了这个,SF才允许你和它集成。手顺如下: 保存后,…

jenkins配置源码管理的git地址时,怎么使用不了 credential凭证信息

前提 Jenkins使用docker部署 问题 (在jenlins中设置凭证的方式)在Jenkins的任务重配置Git地址,并且设置了git凭证,但是验证不通过,报错; 无法连接仓库:Command "git ls-remote -h -- http://192.1XX.0.98:X02/…

模拟实现字符串库函数(一)

在C语言的标准库中提供了很多针对字符串的库函数,这篇文章我们会学习并模拟实现几个简单的库函数 求字符串长度函数strlen strlen函数我们在之前已经用过很多次了,同时也模拟实现过,但是都不是模仿标准库中的strlen来实现,首先我…

2024-03-24 思考-MBTI-简要记录

摘要: 2024-03-24 思考-MBTI-简要记录 MBTI16型人格: MBTI16型人格在人格研究和评价中得到了广泛的应用。MBTI是一种基于瑞士心理学家荣格在理论基础上发展起来的人格分类工具。为了准确判断个人的心态偏好,将每个人分为16种不同的人格类型。这种分类方法不仅为我们…

Red and Black (DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <bits/stdc.h> using namespace std; int a, b, sum; char c[20][20]; void dfs(int x, int y) {c[x][y] #;if (x - 1 > 0 && c[x - 1][y] .){sum;dfs(x - 1, y);}if (x 1 <…

vue2 脚手架

安装 文档&#xff1a;https://cli.vuejs.org/zh/ 第一步&#xff1a;全局安装&#xff08;仅第一次执行&#xff09; npm install -g vue/cli 或 yarn global add vue/cli 备注&#xff1a;如果出现下载缓慢&#xff1a;请配置npm 淘宝镜像&#xff1a; npm config set regis…

使用 STL 容器发生异常的常见原因分析与总结

目录 1、概述 2、使用STL列表中的元素越界 3、遍历STL列表删除元素时对迭代器自加处理有问题引发越界 4、更隐蔽的遍历STL列表删除元素时引发越界的场景 5、多线程同时操作STL列表时没有加锁导致冲突 6、对包含STL列表对象的结构体进行memset操作导致STL列表对象内存出异…