Whatsapp 相关(七) -网络请求

news2024/11/15 9:02:27

本篇主要用来完善上篇文章 frida 监测网络请求的.

whatsapp相关(五)- frida监测网络请求

1: 脚本

本次的脚本与上次的区别是,之前只能输出请求的地址,本次优化后,可输出请求参数,结果等.

代码如下:

Java.perform(function () {
    var HttpURLConnection = Java.use('java.net.HttpURLConnection');
    var URL = Java.use('java.net.URL');
    var Proxy = Java.use('java.net.Proxy');

    var originalOpenConnection = URL.openConnection;
    URL.openConnection.overload().implementation = function () {
        var connection = originalOpenConnection.call(this);
        console.log('URL.openConnection called: ' + this.toString());
        return connection;
    };


    var HttpURLConnectionImpl = Java.use('com.android.okhttp.internal.huc.HttpURLConnectionImpl');
     HttpURLConnectionImpl.connect.overload().implementation = function () {
        console.log('connect()');
        HttpURLConnectionImpl.connect.call(this);
    };
    
    HttpURLConnectionImpl.setRequestProperty.implementation = function(name,value){
                console.log("setRequestProperty => ",name,": ",value);
                return this.setRequestProperty(name,value);
     };
            
    HttpURLConnectionImpl.setRequestMethod.implementation = function(type){
                console.log("setRequestMethod : ",type);
                return this.setRequestMethod(type);
      };
            
    HttpURLConnectionImpl.responseSourceHeader.implementation = function(response){
    			var result = this.responseSourceHeader(response);
    			console.log("responseSourceHeader : " + result);
    			return result;
   };
   
    HttpURLConnectionImpl.getResponseCode.overload().implementation = function(){
                 var code =    this.getResponseCode();
                console.log("getResponseCode : " + code);
                return code;
    };

    HttpURLConnectionImpl.setConnectTimeout.overload("int").implementation = function(time){
        		console.log("setConnectTimeout : " + time);
        		return this.setConnectTimeout(time);
    		};
    		
    var testInput;
    HttpURLConnectionImpl.getInputStream.overload().implementation = function () {
        var returnStream = HttpURLConnectionImpl.getInputStream.call(this);
        testInput = returnStream;
        var inputStr = readInputStream(testInput);
        console.log("getInputStream(): " + inputStr);
        return returnStream;
    };

	#打印inputStream
    function readInputStream(inputStream){
        var str = '';
        if(inputStream == null){
            console.log("inputStream is null");
            return str;
        }
        try{
            var inputStreamReader = Java.use('java.io.InputStreamReader').$new(inputStream ,"UTF-8");
            var bufferedReader = Java.use('java.io.BufferedReader').$new(inputStreamReader);
            var response = Java.use('java.lang.StringBuffer').$new();
            var line = null;
            while((line = bufferedReader.readLine()) != null){
                response.append(line);
            }
            bufferedReader.close();
            str = response;
        }catch(error){
            console.error( "inputstream error: " + error);
            return null;
        }
        return str;
    }
});

由于HttpURLConnection 是抽象类,所以直接打印的HttpURLConnection方法无法输出数据.

我们找到HttpURLConnection的子类HttpURLConnectionImpl .从而获取相关的数据输出.

2: 测试

执行脚本:

frida -U -f com.whatsapp -l /home/zh/workSpace/test/Xpose/app/src/main/java/com/zh/xpose/js/url.js 


     ____
    / _  |   Frida 16.0.2 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://frida.re/docs/home/
   . . . .
   . . . .   Connected to xxx (id=6b4a96b2)
Spawned `com.whatsapp`. Resuming main thread!                           

启动whatsapp后:


[xxx::com.whatsapp ]-> URL.openConnection called: https://graph.whatsapp.com/graphql
setConnectTimeout : 15000
setRequestProperty =>  User-Agent :  WhatsApp/xxx Android/10 Device/LeEco-xxx [FBAN/WhatsAppAndroid;FBAV/xxx;FBLC/zh_CN;FBSV/10;FBBR/msm8996;FBBD/LeEco;FBBV/240175000;FBCA/arm64-v8a:;FBPN/com.whatsapp;FBDM/DisplayMetrics{density=3.5, width=1440, height=2560, scaledDensity=3.5, xdpi=537.882, ydpi=537.388};]
setRequestMethod :  POST
setRequestProperty =>  Content-Type :  application/json
setRequestProperty =>  Content-Encoding :  gzip
connect()
responseSourceHeader : NETWORK 200
getInputStream(): {"data":{"avatar_static_config":{"id":"711543810765370"}},"extensions":{"is_final":true}}


URL.openConnection called: http://clients3.google.com/generate_204
setConnectTimeout : 10000
URL.openConnection called: https://www.whatsapp.com/android/3/WhatsApp.version
setConnectTimeout : 15000
setRequestProperty =>  User-Agent :  WhatsApp/xxx Android/10 Device/LeEco-xxx
setRequestProperty =>  Accept-Charset :  UTF-8
getInputStream(): 
getResponseCode : 204
getResponseCode : 200
getInputStream(): <pre style="word-wrap: break-word; white-space: pre-wrap;">2.24.2.77</pre>

有兴趣加下订阅号,新文章推送:
请添加图片描述

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

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

相关文章

PyTorch][chapter 12][李宏毅深度学习][Semi-supervised Linear Methods-1]

这里面介绍半监督学习里面一些常用的方案&#xff1a; K-means ,HAC, PCA 等 目录&#xff1a; K-means HAC PCA 一 K-means 【预置条件】 N 个样本分成k 个 簇 step1: 初始化簇中心点 (随机从X中抽取k个样本点作为&#xff09; Repeat: For all in X: 根据其到 &…

MP4格式视频怎么提取gif?一招教你在线做

MP4是一种常见的数字多媒体容器格式&#xff0c;它是一种使用最广泛的视频文件格式之一。MP4文件可以包含音频、视频和字幕等多种媒体数据&#xff0c;并且可以通过各种播放器和设备进行播放和共享。它是一种压缩格式&#xff0c;可以在保持相对较小文件大小的同时提供较高的视…

数学建模学习笔记||灰色关联分析

灰色系统 信息绝对透明的是白色系统&#xff0c;信息绝对秘密的是黑色系统&#xff0c;灰色系统介于两者之间 关联分析 即系统的分析因素 包含多种因素的系统中&#xff0c;哪些因素是主要的&#xff0c;哪些因素是次要的&#xff0c;哪些因素影响大&#xff0c;哪些因素影响小…

Vue3下载WEBAPI导出的Excel文件

webApi查询数据保存为Excel /// <summary>/// 获取LMI3D相机涂胶测量数据/// </summary>/// <returns></returns>[HttpPost(Name "GetLMI3DGlueDataToExcel")]public async Task<IActionResult> GetLMI3DGlueDataToExcel(QueryGlueM…

搜维尔科技:「简报」元宇宙数字人赛道,优秀作品《黛妮卡》赏析

黛妮卡是宇宙航星局所特聘来研究纪录地球科技的星际种子。宇宙航星局汇集各星球的菁英并称他们为星际种子&#xff0c;星际种子有各自的任务&#xff0c;完成任务是他们的使命。 学校&#xff1a; 私立长荣高级中学(台湾) 选手&#xff1a; 郭伊珍 角色姓名&#xff1a; 黛妮…

Docker-Cgroup资源限制

目录 一、Cgroup 1.CGROUP概念 2.CGROUP 子系统 3.CGROUP 示例 二、内存资源限制 1.内存资源限制概念 2.内存资源限制参数 1 3.内存资源限制参数 2 三、CPU 资源限制 1.容器中 CPU 使用 2.容器 CPU 限制参数 四、实验演示 一、Cgroup 1.CGROUP概念 在linux内核里提…

【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处&#xff1f; 1.开箱即用&#xff0c;零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

vue3中使用echarts

效果如图: 1、首先安装echarts npm install echarts --save安装后的版本为&#xff1a; “echarts”: “5.4.2”, 2、页面使用 <template><div class"contact_us_page main"><div class"contact_us " id"main" ref"ech…

实际项目演示:Python RegEx在数据处理中的应用!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 正则表达式&#xff08;Regular Expressions&#xff0c;简称 RegEx&#xff09;是一种强大的文本匹配和搜索工具&#xff0c;它在数据处理、文本解析和字符串操作中发挥着关键作用。Python 提供了内置的 re 模块…

DevOps落地笔记-01|追溯本源:DevOps的发展历史回顾

任何事物的诞生、发展和消亡都是由所处社会阶段决定的&#xff0c;软件开发方法也是一样。现在我们津津乐道的 DevOps&#xff0c;也有其自己的起源和诞生的前提条件&#xff0c;今天我带领你追本溯源&#xff0c;一起找一找 DevOps 兴起的历史根源。 当谈到 DevOps&#xff0…

kafka集群搭建需要做的事情

首先&#xff0c;虚拟机克隆好之后的步骤如下&#xff1a; 1. 修改IP、主机名&#xff0c;关闭防火墙&#xff1b;&#xff08;reboot重启&#xff09; 2. 在/etc/hosts文件中进行IP与主机名的映射配置&#xff0c;集群中每天都记得配置&#xff1b; 3. 安装JDK并进行分发&a…

3种JWT验证和续签的策略

3 种JWT验证和续签的策略 好文推荐&#xff1a;一文教你搞定所有前端鉴权与后端鉴权方案&#xff0c;让你不再迷惘 - 掘金 (juejin.cn) 3 种jwt 验证的策略 通过解析去验证&#xff1a;每次访问api时parse jwt 判断是否vaild jwt有效 正常调用api jwt无效 返回401 缺点&a…

字符串和格式化输入/输出

本文参考C Primerf Plus进行C语言学习 文章目录 使用scanf() 从scanf()角度看输入格式字符串中的普通字符scanf()的返回值 1.使用scanf() 如果用scanf()读取基本变量类型的值&#xff0c;在变量名前加上一个&;如果用scanf()把字符串读入字符数组中&#xff0c;不要使用&am…

Kotlin快速入门系列6

Kotlin的接口与扩展 接口 与Java类似&#xff0c;Kotlin使用interface关键字定义接口&#xff0c;同时允许方法有默认实现&#xff1a; interface KtInterfaceTest {fun method()fun methodGo(){println("上面方法未实现&#xff0c;此方法已实现")} } 接口实现 …

提升编程效率的利器: 解析Google Guava库之集合篇RangeSet范围集合(五)

在编程中&#xff0c;我们经常需要处理各种范围集合&#xff0c;例如时间范围、数字范围等。传统的集合类库往往只能处理离散的元素集合&#xff0c;对于范围集合的处理则显得力不从心。为了解决这个问题&#xff0c;Google的Guava库提供了一种强大的数据结构——RangeSet&…

【JLU】校园网linux客户端运行方法

终于给这输入法整好了&#xff0c;就像上面图里那样执行命令就行 写一个开机自启的脚本会更方便&#xff0c;每次都运行也挺烦的 补充了一键运行脚本&#xff0c;文件路径$DIR需要自己修改 #!/bin/bash DIR"/home/d0/ubuntu-drclient-64/DrClient" run_per_prog&qu…

微信小程序上传时报错message:Error: 系统错误,错误码:80051,source size 2148KB exceed max limit 2MB

问题&#xff1a; 微信小程序上传时错误码&#xff1a;80051,source size 2248KB exceed max limit 2MB 问题原因&#xff1a; 由于代码中的静态资源 图片大小超了200k以及主包的体积超出1.5M 解决办法 分包 tabBar 是主包的&#xff0c;不需要分包处理&#xff0c;以下是分…

0130-2-秋招面试—HTML篇

2023 HTML面试题 1.src和href的区别 scr用于替换当前元素&#xff0c;href用于在当前文档和外部资源之间建立联系。 <script src"main.js"></script><link href"style.css" rel"stylesheet" />2.对HTML语义化的理解 根据内…

Linux:重定向

Linux&#xff1a;重定向 输出重定向追加重定向输出重定向与追加重定向的本质输入重定向 输出重定向 在Linux中&#xff0c;输出重定向是一种将命令的输出发送到不同位置的方法。通常&#xff0c;执行命令时&#xff0c;输出会显示在终端上。然而&#xff0c;使用输出重定向&a…