frida的安装使用以及解决抓包app时遇到的证书校验

frida的安装和使用

这里使用夜神模拟器来演示frida的使用,因为真机开启frida-server服务时需要root权限,模拟器自带root

  1. 下载夜神模拟器并启动 夜神官网

  2. 打开power shell, adb连接模拟器,查看模拟器的系统型号

     adb connect 127.0.0.1:62001
    ==already connected to 127.0.0.1:62001
    adb shell getprop ro.product.cpu.abi
    ==x86 
  3. 本机安装frida, frida-tools

     #安装frida, frida-toolspip install frida frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/#查看frida版本,可以找到对应的frida-server的版本frida --version==16.3.3
  4. 从frida github文件下载下载对应的frida-server版本,从以上的模拟器系统(x86),以及frida版本(16.3.3)寻找
    选择对应的frida-server版本

  5. 下载该压缩包文件后,一定要进行解压, 然后对解压后的文件进行重命名,名字可以自定义,为了方便,我这边重定义为frida-server

    解压缩后的文件重命名

  6. 将解压缩的文件上传到手机,并对文件进行权限设置,且运行文件

    #上传文件到模拟器的/data/local/tmp
    adb push frida-server /data/local/tmp/frida-server
    #进入模拟器系统
    adb shell
    #进入到tmp目录下
    cd /data/local/tmp
    #对frida-server进行权限处理,真机需要root, 但是模拟器自带root权限
    chmod 777 frida-server
    #执行frida-server, 切记前面加 ./
    ./frida-server
    ==没有任何报错且输出则表明该服务已经开启,如果想后台运行,则可以后台运行
  7. 另开一个命令行,转发端口,进行监听

    adb forward tcp:27042 tcp:27042 
    ​
    adb forward tcp:27043 tcp:27043
    
  8. 查看手机进程,能够查验到则说明安装成功

    #显示所有进程
    frida-ps -U
    

    在这里插入图片描述
    查看运行中的应用以及包名

    frida-ps -U -a
    

    在这里插入图片描述

  9. 示例: hook java层的函数

    Java.perform(() => {let MainActivity = Java.use('com.germey.appbasic1.MainActivity')console.log('start hook')MainActivity.getMessage.implementation = (arg1, arg2) => {send('Start Hook!')return '8'}
    })
    
  10. 示例: hook native层


Java.perform(function () {Interceptor.attach(Module.findExportByName('libnative.so', 'Java_com_germey_appbasic2_MainActivity_getMessage'),{onEnter: function (args) {send('hook onEnter')send('args[1]=' + args[2])send('args[2]=' + args[3])},onLeave: function (val){send('hook onLeave')val.replace(Java.vm.getEnv().newStringUtf('5'))}})
})
  1. 使用上面两个js文件对app进行hook
 #hook_java.js 实行hook的js文件#com.germey.appbasic1 app的包名,可以使用命令 frida-ps -U -a 查看运行中的app包名frida -U -l hook_java.js  -f com.germey.appbasic1

frida+DroidSSLUnpinning 解决charles抓app包https请求证书校验失败问题

正常使用charles抓app包的时候,比如百度, 会发现配置好代理后,页面无法加载,此时就是因为证书校验没通过,而使用frida+DroidSSLUnpinning就可以通过hook修改证书返回结果,从而跳过证书校验
  1. 下载charles并抓包app,可以查看该博客进行学习操作, 很详细!!Charles和夜神模拟器结合对安卓应用进行抓包

  2. 下载DroidSSLUnpinning github地址,下载zip文件,并解压

    在这里插入图片描述

  3. 进入到解压后的文件…\DroidSSLUnpinning\ObjectionUnpinningPlus目录下,对指定包名进行hook就可以跳过证书验证了


#查看现在模拟器上所有运行的app信息,包括包名
frida-ps -U -a
#com.baidu.searchbox  为包名,我这里使用的是baidu作为测试app
frida -U -l hooks.js  -f com.baidu.searchbox

在这里插入图片描述

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

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

相关文章

阿里云centos7.9 挂载数据盘 并更改宝塔站点根目录

一、让系统显示中文 参考:centos7 怎么让命令行显示中文(英文->中文)_如何在命令行中显示中文-CSDN博客 1、输入命令:locale -a |grep "zh_CN" 可以看到已经存在了中文包 2、输入命令:sudo vi…

SecureCRT使用SSH登录服务器报错:Key exchange failed

SecureCRT使用SSH登录Ubuntu服务器报错:Key exchange failed 原因: ssh客户端与服务器的公钥协商失败,SecureCRT客户端所指定的秘钥交换算法(KexAlgorithms ),不在服务端支持范围内。可能是服务端的sshd版…

学习笔记(linux高级编程)7

2._exit 系统调用 void _exit(int status); 功能: 让进程退出,不刷新缓存区 参数: status:进程退出状态 返回值: 缺省 回调函数 3.atexit int atexit(void (*function)(void)); 功能: 注册进程退出前执行的函数 参数: function:函数指针 指向void返回值void参数的函数指针 返…

C++ | Leetcode C++题解之第188题买卖股票的最佳时机IV

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(int k, vector<int>& prices) {if (prices.empty()) {return 0;}int n prices.size();k min(k, n / 2);vector<int> buy(k 1);vector<int> sell(k 1);buy[0] -prices[0]…

配电房挂轨巡检机器人

配电房作为电网中的重要组成部分。其运行的的安全和稳定性直接影响到电力供应的质量。然而&#xff0c;传统的人工巡检模式存在诸多弊端&#xff0c;例如巡检效率低下、人员安全难以保障、巡检结果主观性强等问题。为了解决这些问题&#xff0c;旗晟机器人推出B3系列升降云台轨…

CODESYS+EtherCAT+X86/ARM硬件平台:高性能运动控制的标配,支持定制

支持的硬件标准与定制平台&#xff1a; X86:INTEL ARM: RK3568/RK3588/TI/NXP/树莓派/全志T3/A40i等 前段时间分享了施耐德基于CODEYS开发的首款支持EtherCAT总线的运动控制器&#xff0c;CODESYSEtherCATX86硬件平台&#xff1a;高性能运动控制的标配。 CODESYS第一次接触还…

4大wordpress渐变色网站模板

家居摆件wordpress外贸模板 家居装饰、配件、摆件wordpress外贸模板&#xff0c;适合搞家居装饰的公司官网使用。 https://www.jianzhanpress.com/?p3515 玩具wordpress外贸模板 简洁玩具wordpress外贸模板&#xff0c;适合做跨境电商外贸公司使用的wordpres外贸s网站主题。…

Java substring() 方法详解

在Java编程中&#xff0c;字符串处理是非常常见的任务&#xff0c;其中提取字符串的子串操作更是屡见不鲜。Java提供了非常方便的substring()方法&#xff0c;让我们可以轻松地从一个字符串中提取出子字符串。本文将详细介绍substring()方法的简介、用法和示例&#xff0c;并通…

PTE-靶场训练-1

PTE-靶场训练实战笔记 靶场搭建 靶场下载链接&#xff1a; https://pan.baidu.com/s/1ce1Kk0hSYlxrUoRTnNsiKA?pwdha1x vim /etc/sysconfig/network-scripts/ifcfg-eth0 设置好后reboot重启一下即可&#xff0c;然后访问81-85端口&#xff0c;共5题。 因为靶场出了问题&a…

C++ Primer 中文版 第5版 读书笔记

读书过程中发现&#xff0c;读得越多&#xff0c;忘得越多。因此记录读书笔记 1.2 初始输入输出 向流写入数据 <<运算符&#xff08;输出运算符&#xff09;接受两个运算对象&#xff1a;左侧的运算对象必须是一个ostream对象&#xff0c;右侧的运算对象是要打印的值。…

Spark SQL----连接其他数据库的JDBC

Spark SQL----连接其他数据库的JDBC 数据源选项 Spark SQL还包括一个数据源&#xff0c;可以使用JDBC从其他数据库读取数据。与使用 JdbcRDD相比&#xff0c;应该优先使用此功能。这是因为结果以DataFrame的形式返回&#xff0c;并且可以很容易地在Spark SQL中进行处理或与其他…

React 中 useState 和 useReducer 的联系和区别

文章目录 使用场景使用 useState使用 useReducer 联系区别用法状态更新逻辑适用场景可读性和可维护性 使用场景 使用 useState 状态逻辑简单。只涉及少量的状态更新。需要快速和简单的状态管理。 使用 useReducer 状态逻辑复杂。涉及多个子状态或多种状态更新逻辑。需要更好…

Vatee万腾平台:一站式智慧服务,让生活更美好

在数字化浪潮席卷全球的今天&#xff0c;我们生活的方方面面都在经历着前所未有的变革。Vatee万腾平台凭借其一站式智慧服务&#xff0c;正成为推动这场变革的重要力量&#xff0c;让我们的生活变得更加美好。 Vatee万腾平台&#xff0c;作为一家专注于提供智慧服务的领军企业&…

【运维】如何分析和清理 Linux 根目录的磁盘空间使用情况

要分析根目录(/)使用了这么多空间&#xff0c;您可以使用以下几种方法来找出具体的占用情况&#xff1a; 1. 使用 du 命令 du 命令可以显示目录或文件的磁盘使用情况。 运行以下命令来找出根目录下的哪些目录占用了大量空间&#xff1a; sudo du -h --max-depth1 / | sort …

基于weixin小程序校园快递系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;订单管理&#xff0c;快递管理&#xff0c;快递记录管理&#xff0c;公告管理&#xff0c;基础数据管理 小程序功能包括&#xff1a;系统首页&#xff0c;…

企业有必要安装数据文件加密软件吗?哇!这么多好处

需要的 一、查看以下分析&#xff0c;便能得出结论 安全防护提升&#xff1a;禁止拷贝、打印、截屏等&#xff0c;还能够设置文件的浏览次数、有效期&#xff0c;提供多层次的文档保护措施。 核心机密保护&#xff1a;企业的核心机密文件、技术资料、客户资料等重要信息是公…

MySQL——Update语句详解

update 修改谁 &#xff08;条件&#xff09; set 原来的值 新值 -- 修改学员的名字(指定条件&#xff0c;只改一列) UPDATE student SET name 辰阳 WHERE id 1; -- 修改学员的名字(不指定条件&#xff0c;全改) UPDATE student SET name 宝宝-- 语法&#xff1a; -- U…

【MySQL备份】mysqldump篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序&#xff0c;用于创建数据库的逻辑备份。它能够导出数据库的结构&#xff08;如表结构、视图、触发器等&#xf…

reactjs18 中使用@reduxjs/toolkit同步异步数据的使用

react18 中使用@reduxjs/toolkit 1.安装依赖包 yarn add @reduxjs/toolkit react-redux2.创建 store 根目录下面创建 store 文件夹,然后创建 index.js 文件。 import {configureStore } from "@reduxjs/toolkit"; import {counterReducer } from "./feature…

Does a vector database maintain pre-vector chunked data for RAG systems?

题意&#xff1a;一个向量数据库是否为RAG系统维护预向量化分块数据&#xff1f; 问题背景&#xff1a; I believe that when using an LLM with a Retrieval-Augmented Generation (RAG) approach, the results retrieved from a vector search must ultimately be presented…