当前位置: 首页 > news >正文

手机和模拟器的 Frida 环境配置

目录

一、配置 JDK 和 android 环境

二、连接设备和查看权限

1、连接设备

2、查看手机权限

三、手机配置 Frida 

1、frida-server下载

2、验证

四、模拟器配置 Frida 

1、下载模拟器并调节成手机版:

2、连接并查看架构

3、配置并开启 x86 的 frida-server

4、转发端口,进行监听

5、实验一下

五、配置客户端


因为要学习手机端的自动化,所以来学习 Frida,建议直接看第一和第四。

一、配置 JDK 和 android 环境

链接:配置 JDK 和 Android SDK-CSDN博客

二、连接设备和查看权限

1、连接设备

 1) 拿出你的手机-----打开手机设置------找到关于手机-------一直点击版本号直到出现提示,华为的点击 harmonyOS 版本(型号代码下方的);

(2) 打开手机的开发者选项(华为的在系统与更新里面),该开的开(USB调试、仅充电模式下允许ADB调试),该关的关,特别是 USB 调试这里一定要打开。

(3) 测试是否连接成功,在终端输入‘adb devices -l’,查看连接的设备,如果列表为空,检查一下是不是有以上原因(1)(2)。(如果出现error: no devices found,参考链接:学习使用 Frida 过程中出现的问题-CSDN博客)

连接成功也可以看到此电脑下出现设备

2、查看手机权限

你可以使用 adb 命令来检查设备是否已 root:

adb shell whoami

如果返回 root,则表示设备已 root。如果返回 shell,则表示设备未 root。

使用 adb shell 进入设备后,输入 su,若出现如下:

表明要开启权限,没开启(配置 Frida 也没用),开启 root 参考:华为android手机root,华为手机怎么root-CSDN博客 等等。root 需谨慎。

本人自己也没搞好,真难,因为手机有用,准备换模拟器,看第四点。

三、手机配置 Frida 

1、frida-server下载

下载链接:Releases · frida/frida · GitHub

注意问题:有时候可能遇到跳转到gitcode的链接,gitcode上似乎只有源码,不清楚是什么。

我下载的是最新版本之前的一个版本,如下所示:四个分别是ARM 架构32位、 64位、 Intel x86 架构的32位、64位,我们手机一般是ARM64架构,所以下载 arm64的。查看架构,使用命令:

adb shell getprop ro.product.cpu.abi

下载,解压后,查看下载文件状态,文件名很长

把它作为 frida 服务端环境,推到手机的 /data/local/tmp 目录。在该文件所在文件夹 cmd,输入下方命令。(要查看删除手机中的特定文件夹下的文件,可参考:adb shell进入设备后的命令-CSDN博客)

adb push frida-server-16.3.1-android-arm64 /data/local/tmp/

修改文件权限为755:

adb shell chmod 755 /data/local/tmp/frida-server-16.3.1-android-arm64

2、验证

使用命令 frida-ps -U,出现如下图所示,表明配置安装成功。

四、模拟器配置 Frida 

参考链接:夜神模拟器安装frida-server图文详解-CSDN博客

1、下载模拟器并调节成手机版:

链接:夜神安卓模拟器-手游模拟器电脑版_夜神模拟器官网

2、连接并查看架构

到 bin 目录,右键在终端打开或者上方 cmd 打开命令行窗口

连接:

adb connect 127.0.0.1:62001

查看架构

adb shell getprop ro.product.cpu.abi

3、配置并开启 x86 的 frida-server

下载,解压,在解压后的目录里打开cmd,输入 adb connect 127.0.0.1:62001连接:

使用命令将 frida-server 放入模拟器中:

adb push frida-server-16.3.1-android-x86 /data/local/tmp/

查看模拟器中文件等命令可参考:adb shell进入设备后的命令-CSDN博客

之后使用以下命令

adb shell 
su
cd /data/local/tmp
chmod 755 frida-server-16.3.1-android-x86
./frida-server-16.3.1-android-x86

运行命令,返回以下信息则说明已经运行中(即:成功启动了frida-server),这个shell(cmd窗口)不能关闭,否则 frida 就关了。

4、转发端口,进行监听

另开一个cmd命令窗口,在夜神模拟器安装目录 bin 下打开cmd,输入 adb connect 127.0.0.1:62001

转发端口,进行监听

adb forward tcp:27042 tcp:27042

adb forward tcp:27043 tcp:27043

查看进程,frida-ps -U 输出说明已经安装成功

5、实验一下

下载一个软件,例如拼多多。打开拼多多

在命令窗口使用命令,查看正在运行的服务:

 adb shell dumpsys activity | findstr "mResume"

使用以下命令跟踪pinduoduo里的Open()函数(这时候要保持frida-server是开启着的):

frida-trace -U -i open -N com.xunmeng.pinduoduo

可以看到主控端的命令行关于 open() 的输出了:

  • 现在可以实时的修改JavaScript脚本,并且在Android的App里面深挖了。

五、配置客户端

在 PC 上安装 Python 的运行环境,安装完成后执行下面的命令安装 frida

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple frida==16.3.1#版本尽量相同
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple frida-tools
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple objection

文章会随着本人学习程度的加深而更新,欢迎关注和收藏。文章到此结束,谢谢大家,有问题,欢迎讨论。

相关文章:

手机和模拟器的 Frida 环境配置

目录 一、配置 JDK 和 android 环境 二、连接设备和查看权限 1、连接设备 2、查看手机权限 三、手机配置 Frida 1、frida-server下载 2、验证 四、模拟器配置 Frida 1、下载模拟器并调节成手机版: 2、连接并查看架构 3、配置并开启 x86 的 frida-serve…...

力扣1385.两个数组间的距离值

力扣1385.两个数组间的距离值 二分判断答案是否正确 class Solution {public:int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) {ranges::sort(arr2);ranges::sort(arr1);int m arr2.size();auto check [&](int low,int h…...

[C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品

大家好&#xff0c;今天zty带来的是斗破苍穹的 2.11.6 版本&#xff0c;这个版本主要更新了&#xff1a;1、背包 2、将退出游戏改到了设置里面 3、如果不逃跑不会停止战斗。废话不多说&#xff0c; 先赞后看 养成习惯 code #include<stdio.h> #include<iostrea…...

认识与学习JSP

JSP核心技术 什么是JSP JSP全称是Java Server Pages&#xff0c;它和servle技术一样&#xff0c;都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是Servlet JSP这门技术的最大的特点在于&#xff0c;写jsp就像在写html&#xff0c;但它相比htm…...

MySql 各种 join

MySql 定义了很多join的方式&#xff0c;接下来我们用一个例子来讲解。 用到的表 本文用到了两个表s1,s2&#xff1a; 内外连接 测试 1 1 1.select * from s1 inner join s2 on(s1.id s2.id);&#xff1a; -------- | id | id | -------- | 3 | 3 | | 4 | 4 | --------2…...

【Android面试八股文】Android中操作多线程的方式有哪些?

文章目录 1. 使用 `Thread` 和 `Runnable`2. `AsyncTask`3. `Handler` 和 `Looper`4. `HandlerThread`5. `ThreadPoolExecutor`6. `IntentService`7. `RxJava`8. `Coroutine`(协程)9. `WorkManager`在Android开发中,有多种方式可以进行多线程操作。以下是主要的几种方式: 1…...

语义分割和目标检测的关系

目录 1.语义分割的目标 2.目标检测的目标 3.两种任务的异同之处 从大方向的任务特点上来说 &#xff08;1&#xff09;物体的位置 &#xff08;2&#xff09;物体的分类 从数据格式来说 (1&#xff09;语义分割的数据格式 (2&#xff09;目标检测的数据格式 1.语义分…...

SpringBoot 大文件基于md5实现分片上传、断点续传、秒传

SpringBoot 大文件基于md5实现分片上传、断点续传、秒传 SpringBoot 大文件基于md5实现分片上传、断点续传、秒传前言1. 基本概念1.1 分片上传1.2 断点续传1.3 秒传1.4 分片上传的实现 2. 分片上传前端实现2.1 什么是WebUploader&#xff1f;功能特点接口说明事件APIHook 机制 …...

数据资产治理与数据质量提升:构建完善的数据治理体系,确保数据资产的高质量与准确性

一、引言 随着信息技术的迅猛发展&#xff0c;数据已经成为企业和社会发展的重要资产。然而&#xff0c;数据资产的有效治理与数据质量的提升&#xff0c;是企业实现数字化转型、提升竞争力的关键。本文旨在探讨数据资产治理与数据质量提升的重要性&#xff0c;并提出构建完善…...

SylixOS下UDP组播测试程序

SylixOS下UDP组播测试 测试效果截图如下: udp组播发送测试程序。 /********************************************************************************************************* ** ** 中国软件开源组织 ** ** …...

Web前端快速开发平台:革命性工具,提升开发效率的新篇章

Web前端快速开发平台&#xff1a;革命性工具&#xff0c;提升开发效率的新篇章 在数字化时代的浪潮中&#xff0c;Web前端技术的快速发展与变革正在重塑我们的数字世界。为了应对这种快速变化&#xff0c;Web前端快速开发平台应运而生&#xff0c;为开发者们提供了更加高效、便…...

内窥镜系统设计简介

内窥镜系统设计简介 1. 源由2. 系统组成2.1 光学系统2.2 机械结构2.3 电子系统2.4 软件系统2.5 安全性和合规性2.6 研发与测试2.7 用户培训与支持 3. 研发过程3.1 光学系统Step 1&#xff1a;镜头设计Step 2&#xff1a;光源Step 3&#xff1a;成像传感器 3.2 机械结构Step 1&a…...

使用Spring Boot实现Redis多数据库缓存

Redis多数据库存储实现用户行为缓存 在我的系统中&#xff0c;为了优化用户行为数据的存储与访问效率&#xff0c;我引入了Redis缓存&#xff0c;并将数据分布在不同的Redis数据库中。通过这种方式&#xff0c;可以减少单一数据库的负载&#xff0c;提高系统的整体性能。 主要…...

揭秘newSingleThreadExecutor:深度解析与源码探秘

1. 概述 newSingleThreadExecutor是Java线程池框架中Executors类的一个静态方法,它返回一个线程池实例,该线程池维护一个单一的工作线程来执行任务。这个线程池的特性在于它保证了所有提交的任务会按照它们在队列中的顺序依次执行,而不会并发执行。它适用于需要保证任务顺序…...

使用python绘制三维散点图

使用python绘制三维散点图 三维散点图三维散点图的用途效果代码 三维散点图 三维散点图&#xff08;3D Scatter Plot&#xff09;是一种用于展示三维数据的图表。与二维散点图类似&#xff0c;三维散点图通过点在三维空间中的位置来表示数据点的三个特征。每个点在 x、y 和 z …...

Vue51-插件

一、插件的定义 vue里面的插件&#xff0c;类似于游戏的外挂。 vue中插件的本质&#xff1a;一个对象&#xff0c;里面必须包含install方法。 二、插件的使用 2-1、创建一个插件js文件&#xff08;写在src中plugins.js&#xff09; 2-2、应用插件&#xff1a;Vue.use(插件) …...

python将一个整数转为字符串列表

如果你想要将一个整数转换为字符串列表&#xff0c;其中每个数字&#xff08;0-9&#xff09;都是列表中的一个元素&#xff0c;你可以先将整数转换为字符串&#xff0c;然后遍历这个字符串&#xff0c;将每个字符添加到列表中。这里是一个简单的示例&#xff1a; # 假设你有一…...

PTA 6 - 20 汉诺塔问题(py 递归)

这道题是一道比较典型的递归问题&#xff0c;他跟斐波那契数列的本质是一样的&#xff0c;大家自己动手推理一下&#xff0c;非常好推 参考代码&#xff1a; def hanoi(n,a,b,c):global stepif n 1:print(a,"->",c)step 1else:hanoi(n-1,a,c,b)print(a,"…...

深度学习Day-20:DenseNet算法实战 乳腺癌识别

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 一、 基础配置 语言环境&#xff1a;Python3.8编译器选择&#xff1a;Pycharm深度学习环境&#xff1a; torch1.12.1c…...

给类设置serialVersionUID

第一步打开idea设置窗口&#xff08;setting窗口默认快捷键CtrlAltS&#xff09; 第二步搜索找到Inspections 第三步勾选主窗口中Java->Serializations issues->下的Serializable class without serialVersionUID’项 &#xff0c;并点击“OK”确认 第四步鼠标选中要加…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...