Android抓包 - Okhttp混淆导致Hook工具失效
Android抓包 - Okhttp混淆导致Hook工具失效
本文部分内容参考 loco 大佬的文章,同时借用loco大佬文章中的2个APP(有无混淆)。
微信公众号: yeshengit
这篇文章的主要目的是介绍使用Frida来处理APP没使用Android自带的HTTP客户端进行请求,且对HTTP客户端进行了混淆,导致JustTrustMe失效的问题。
首先,我们先看下该样例应用的源码,该应用做的事情就是访问百度,我们看到下图第41行,我们这边配置的证书哈希是随机的,因此无论我们如何访问,请求都是会失效的。
开始前,我先说下测试机的环境:
雷电模拟器3.76,Android 5.1.1,开启Root,安装且激活了Xposed,同时激活了TrustMePlus
让我们运行一下,没有开混淆的APP,点击发送请求。这边提示请求成功
那么我们再来试试开了混淆的应用。提示证书验证失败
为什么会出现这种情况呢,我们可以将这2个应用使用jadx反编译,我们可以看看区别
可以看到,左为无混淆,右为混淆,插件还是十分明显的,此时我们再去看看JustTrustMe的源码。
下面我给JustTrustMe的几个关键点进行了标注,同时加了点注释。其实它主要的操作就是替换了check方法.
Okhttp 2.5 check 方法返回 True
Okhttp 3.x check 方法返回 null
分析到这里,我们可以使用Frida来写点代码来测试测试
jsscript.js文件代码:
if(Java.available){Java.perform(function(){var Pinner = Java.use("okhttp3.CertificatePinner");send("okHTTP 3.x Found");Pinner.check.overload('java.lang.String', 'java.util.List').implementation = function(a,b){send("Hook CertificatePinner.check success!")return null;};});
}
Hook.py代码:
import frida, sys
jsCode = ""
with open("jsscript.js","r",encoding='utf-8') as f:jsCode = f.read()
def message(message, data):if message["type"] == 'send':print(u"[*] {0}".format(message['payload']))else:print(message)
process = frida.get_remote_device().attach("com.loco.example.OkHttp3SSLPinning")
script= process.create_script(jsCode)
script.on("message", message)
script.load()
sys.stdin.read()
注意:Frida在模拟器上运行不太稳定,现在测试环境为 nexus5 (6.0.1),Root,未安全Xposed模块
运行下Frida脚本,看看
至此,无混淆的版本已经搞定了抓包问题,那么我们再来试试混淆版本。
混淆后的jsscript.js:
if(Java.available){Java.perform(function(){var Pinner = Java.use("d.k");send("okHTTP 3.x Found");Pinner.a.overload('java.lang.String', 'java.util.List').implementation = function(a,b){send("Hook CertificatePinner.check")return null;};});
}
于是乎
至此,全篇终!!!
SSL ping APK下载地址:
链接:https://pan.baidu.com/s/1vIw40alQG7K1wNkmzmAkgw
提取码:as7g
参考
DroidSSLUnpinning: https://github.com/WooyunDota/DroidSSLUnpinning/blob/master/ObjectionUnpinningPlus/hooks.js
JustTrustMe: https://github.com/Fuzion24/JustTrustMe
tps://github.com/WooyunDota/DroidSSLUnpinning/blob/master/ObjectionUnpinningPlus/hooks.js
JustTrustMe: https://github.com/Fuzion24/JustTrustMe
Android抓包 - Okhttp混淆导致Hook工具失效相关推荐
- android 抓包 okhttp,Android端App抓包小工具[okhttp_poker]
Android端App抓包小工具[okhttp_poker] Android端App抓包小工具[okhttp_poker] OkHttpLogger-Frida Frida 实现拦截okhttp的脚本 ...
- Android抓包方法之Win7笔记本Wifi热点+WireShark工具
Android抓包方法 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第 ...
- Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包
抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...
- batT脚本如何自动执行 adb shell 以后的命令(android抓包)
bat脚本自动执行 adb shell 以后的命令 @echo off echo su > test.txt echo 其它命令(如 cd /data) >> test.txt ad ...
- Android 抓包 Fiddler Https443问题
Android 抓包 Fiddler Https443问题 简单的Fiddler配置在这里不说了,可以查到 解决Android 手机App抓包出现443问题 方法一: 把app的targetSdkVe ...
- 当你写爬虫抓不到APP请求包的时候该怎么办?【高级篇-混淆导致通用Hook工具失效】...
提示:因为高级篇以后的APP将无法使用很通用的方式处理,每种类型甚至是每个APP的反抓包处理方式都会有差别,所以这个系列以后会以[高级篇-具体类型]的形式来写. 这篇文章的主要内容是解决在遇到APP没 ...
- fiddler+android抓包工具配置使用
今天临时增加一个工作,手机需要抓包,查看了不同的抓包工具,最后确定使用fiddler抓包工具进行操作,这里以android为例记录一下工具的配置和使用操作. fiddler的安装 网上有很多fiddl ...
- android抓包工具——使用fiddler4在安卓手机抓包
Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...
- 手机抓包+注入黑科技HttpCanary——最强大的Android抓包注入工具
HttpCanary HttpCanary是Android平台下功能最强大的抓包和注入工具,支持HTTP.HTTPS.HTTP2和WebSocket等多种协议. 无需Root,抓包时不会影响其它App ...
最新文章
- LeetCode Median of Two Sorted Arrays (DFS)
- Java注释 link_开源代码中注释中的那些a link p @ 是给什么编辑器用的????
- 在Scrollview中使用AutoLayout
- Mac os + Flask + PyCharm python开发环境集成
- java 进度条jsp,jsp进度条_jsp技巧
- python3编译成exe运行_python3.x的程序如何打包成exe可执行文件
- 人脸关键点: DCNN-Deep Convolutional Network Cascade for Facial Point Detection
- 《Outlier Analysis》书籍
- FireFox的插件范例,竟然有问题
- Cocos Creator 实现虚拟摇杆
- Navicat for MySQL 12.0.26 中文破解版 数据库管理工具
- python小学生入门教程-python 小学生教程|怎么让一个小学生学会Python?
- 点云与图像融合的深度学习方法综述
- log怎么用计算机,手机计算器log怎么用
- 计算机无法打开隐藏文件,处理怎么打开隐藏文件
- 9:JDBC-Java API 实战
- ipad查看本地文件html文件在哪里,ipad文件夹在哪里?小编手把手教你找到ipad文件夹在哪里...
- 26字母 导航 android,Android自定义View实现字母导航栏的代码
- 仙之侠道2玖章青门任务怎么做_仙之侠道Ⅱ攻略_仙之侠道Ⅱ柒章 任务全攻略 新手必看_牛游戏网魔兽地图专区...
- 04.修改Docker镜像源地址为网易镜像源地址
热门文章
- GEEer成长日记五:Sentinel-2计算NDVI并逐月时间序列分析
- OpenCV入门基础操作(二)----图像像素的处理
- tomcat8弱口令漏洞复现与getshell
- JAVA定时器 配置org.springframework.scheduling.quartz.CronTriggerBean
- linux命令连接sslftp,Linux命令行下登录ssl加密的ftp
- Caffe2 入门教程
- MSN进行时 msning
- C语言标准时间转时间戳
- matlab cell向量匹配向量,matlab – 使用cell2mat将数字矩阵与字符串向量(列标签)连接起来的问题...
- bzoj 1070【scoi2007】修车(网络流)