当前位置: 首页 > 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”确认 第四步鼠标选中要加…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...