flutter抓包绕过

news2024/12/24 10:18:00

lutter的证书校验

起因:

最近工作上让做个app的复测,把apk发我后,开始尝试挂代理抓包,结果发现抓不到

为是证书没弄好,想着前几天不是刚导入了吗(雾)。又重新导入了下还是不行。然后各种lsp模块,objection都不行,r0capture也没数据。
然后jadx看了下,全是flutter字样,才想起来和flutter有关。 

开始百度(:

然后就开始各种找。
 

session_verify_cert_chain函数在第356行的ssl_x509.cc中被定义 

然后根据[原创]一种基于frida和drony的针对flutter抓包的方法-Android安全-看雪-安全社区|安全招聘|kanxue.com 这篇文章特征找,但是这个是32位的,所以在app安装的时候指定32位安装

 

写脚本绕过

32位

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

function hook_ssl_verify_result(address) {

Interceptor.attach(address, {

        onEnter: function(args) {

            console.log("Disabling SSL validation")

        },

        onLeave: function(retval) {

            console.log("Retval: " + retval);

            retval.replace(0x1);

        }

    });

}

function hookFlutter() {

    var m = Process.findModuleByName("libflutter.so");

    var pattern = "2D E9 F0 4F 85 B0 06 46 50 20 10 70";

    var res = Memory.scan(m.base, m.size, pattern, {

        onMatch: function(address, size){

            console.log('[+] ssl_verify_result found at: ' + address.toString());

        // Add 0x01 because it's a THUMB function

        // Otherwise, we would get 'Error: unable to intercept function at 0x9906f8ac; please file a bug'

            hook_ssl_verify_result(address.add(0x01));

        },

        onError: function(reason){

            console.log('[!] There was an error scanning memory');

        },

        onComplete: function() {

            console.log("All done")

        }

    });

}

然后启动就可以抓包了

64位

搜索ssl_client

 

然后就找到了这些

1

2

3

4

5

6

7

8

9

.text:0000000000596870 FF C3 01 D1                 SUB             SP, SP, #0x70

.text:0000000000596874 FD 7B 01 A9                 STP             X29, X30, [SP,#0x70+var_60]

.text:0000000000596878 FC 6F 02 A9                 STP             X28, X27, [SP,#0x70+var_50]

.text:000000000059687C FA 67 03 A9                 STP             X26, X25, [SP,#0x70+var_40]

.text:0000000000596880 F8 5F 04 A9                 STP             X24, X23, [SP,#0x70+var_30]

.text:0000000000596884 F6 57 05 A9                 STP             X22, X21, [SP,#0x70+var_20]

.text:0000000000596888 F4 4F 06 A9                 STP             X20, X19, [SP,#0x70+var_10]

.text:000000000059688C 08 0A 80 52                 MOV             W8, #0x50

.text:0000000000596890 48 00 00 39                 STRB            W8, [X2]

然后写脚本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

function hook_ssl_verify_result(address) {

Interceptor.attach(address, {

        onEnter: function(args) {

            console.log("Disabling SSL validation")

        },

        onLeave: function(retval) {

            console.log("Retval: " + retval);

            retval.replace(0x1);

        }

    });

}

function hookFlutter() {

    var m = Process.findModuleByName("libflutter.so");

    var pattern = "FF C3 01 D1 FD 7B 01 A9 FC 6F 02 A9FA 67 03 A9 F8 5F 04 A9 F6 57 05 A9 F4 4F 06 A9 08 0A 80 52 48 00 00 39";

    var res = Memory.scan(m.base, m.size, pattern, {

        onMatch: function(address, size){

            console.log('[+] ssl_verify_result found at: ' + address.toString());

        // Add 0x01 because it's a THUMB function

        // Otherwise, we would get 'Error: unable to intercept function at 0x9906f8ac; please file a bug'

            hook_ssl_verify_result(address.add(0x01));

        },

        onError: function(reason){

            console.log('[!] There was an error scanning memory');

        },

        onComplete: function() {

            console.log("All done")

        }

    });

}

然后发现报错了

 

 

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

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

相关文章

OJ_找位置

题干 代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> #include<map> using namespace std;int main() {char str[200] { 0 };scanf("%s", str);map<char, vector<int>> times…

ROS入门之通信机制及常用API

文章目录 前言一、话题通信1.话题通信理论2.话题通信常用API&#x1f357;发布者advertisepublish &#x1f356;订阅者subscribe 3.自定义msg 二、服务通信1.服务通信理论2.服务通信常用API&#x1f386;服务端advertiseService &#x1f387;客户端serviceClientros::service…

[大厂实践] Pinterest通用计算平台实践

Pinterest平台团队开发实现了名为PinCompute的高性能通用计算平台&#xff0c;支持Pinterest的大量异构用例和服务。本文介绍了团队在开发这一平台过程中的经验和实践&#xff0c;对于其他平台团队来说&#xff0c;具有很好的参考意义。原文: PinCompute: A Kubernetes Backed …

RabbitMQ面试必备:基本概念、组件原理、消息传递模型,一网打尽。解密高可用性、负载均衡,深入了解安全性配置和性能优化

一、RabbitMQ的基本概念&#xff1a; 1.什么是消息队列&#xff1f; 消息队列是一种在分布式系统中用于在不同组件之间传递消息的通信机制。它允许应用程序和服务通过异步方式进行通信&#xff0c;提高了系统的可伸缩性和松耦合性。消息队列通常包括生产者&#xff08;Produc…

node-sass版本与NodeJS版本不匹配的问题

npm install 报错如下 npm ERR! code 1 npm ERR! path D:\Project\git_Product\YYYY\user\node_modules\node-sass npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/build.js 问题原因 node-sass 与 node 版本不匹配 卸载Node…

PM圆桌派:同事不愿意告诉你的职场套路有哪些?

职场是社会的缩影&#xff0c;想要崭露头角&#xff0c;获得更多升职加薪的机会&#xff0c;就不要做着和多数人一样的事情&#xff0c;却期待着不一样的结果。 职场上有很多潜在的规则&#xff0c;要会做事&#xff0c;也要会说话&#xff0c;更要会做人。如果不懂规则&#…

day43_jdbc

今日内容 0 复习昨日 1 SQL注入问题 2 PreparedStatement 3 完成CRUD练习 4 ORM 5 DBUtil (properties) 6 事务操作 0 复习昨日 已经找人提问… 1 SQL注入 1.1 什么是SQL注入 用户输入的数据中有SQL关键词,导致在执行SQL语句时出现一些不正常的情况.这就是SQL注入! 出现SQL注入…

springcloud-gateway升级版本allowedOrigins要改allowedOriginPatterns

前言 报错: java.lang.IllegalArgumentException: When allowCredentials is true,allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin"response header. To allow credentials to a se…

AI大模型专题:OWASP大语言模型应用程序十大风险V1.0

今天分享的是AI大模型系列深度研究报告&#xff1a;《AI大模型专题&#xff1a;OWASP大语言模型应用程序十大风险V1.0》。 &#xff08;报告出品方&#xff1a;OWASP&#xff09; 报告共计&#xff1a;14页 LM01:2023_ 提示词注入 描述&#xff1a;提示词注入包括绕过过滤器…

【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

Java八大常用排序算法

1冒泡排序 对于冒泡排序相信我们都比较熟悉了&#xff0c;其核心思想就是相邻元素两两比较&#xff0c;把较大的元素放到后面&#xff0c;在一轮比较完成之后&#xff0c;最大的元素就位于最后一个位置了&#xff0c;就好像是气泡&#xff0c;慢慢的浮出了水面一样 Jave 实现 …

解决IntellIJ Idea内存不足

突然有一天我在IDEA打开两个项目时&#xff0c;发生了报错&#xff0c;说我内存不足&#xff0c;我这电脑内存16G怎么会内存不足。下面是我的解决方案。 IntelliJ IDEA 报告内存不足的原因通常与以下几个因素有关&#xff1a; 项目规模较大&#xff1a;如果您正在开发的项目非…

Linux 配置路由转发功能测试

测试Linux配置路由转发功能。 参考 手把手带你将 Linux 主机配置为静态路由器tcpdump详解&实战 环境 操作系统 Centos7.9 网络环境 1. 三台主机的网卡 enp0s5 均在 10.211.55.0/24 网段&#xff0c;且网络可以通讯 centos7-18的IP 10.211.55.18&#xff0c;作为路由…

【退役之重学前端】vite, vue3, vue-router, vuex, ES6学习日记

学习使用vitevue3的所遇问题总结&#xff08;2024年2月1日&#xff09; 组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default…

一次enq: TM - contention分析

客户反映前台业务卡住了&#xff0c;怀疑是有锁表&#xff0c;锁表时查询等待事件是enq: TM - contention&#xff0c;因为是业务高峰期&#xff0c;所以直接把锁杀掉了&#xff0c;事后想要查一下锁表原因。 客户数据库环境是11g rac&#xff0c;我采集了锁表时间段两节点的a…

C++拷贝构造函数、赋值运算符重载

1.拷贝构造函数 拷贝构造函数的写法如图所示 调用方式如下 接下来我来说说它的特征 1.1特征 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 拷贝构造函…

算法学习——华为机考题库9(HJ56 - HJ63)

算法学习——华为机考题库9&#xff08;HJ56 - HJ63&#xff09; HJ56 完全数计算 描述 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子&#xff08;即除了自身以外的约数&#xff09;的和&…

Android配置GitLab CI/CD持续集成,Shell版本的gitlab-runner,FastLane执行,上传蒲公英

mac环境下&#xff0c; 首选需要安装gitlab-runner和fastlane brew install gitlab-runner brew install fastlane 安装完成&#xff0c;来到我们在gitlab下新建的Android项目&#xff0c;我们开始创建gitlab-runner 1、创建runner 点开runner&#xff0c;点击新建runner …

map容器的基本概念及常用成员函数

map&#xff08;字典&#xff09;的基本概念 map是一个将一个值映射到另一个值的一种数据结构。&#xff08;即两个值之间有一一对应关系&#xff09;。 map的所有元素都是pair类型&#xff0c;pair中的第一个元素称为键值&#xff08;key&#xff09;第二个元素称为实值&…

Vue工程引入Element-ui

npm 安装ELement-ui npm i element-ui -S 于package.json中发现有“element-ui”版本号即可 引入 Element 在 main.js 中写入以下内容&#xff1a; import element-ui/lib/theme-chalk/index.css; import ElementUI from element-ui;Vue.use(ElementUI);之后根据自己的需求设计…