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工具失效相关推荐

  1. android 抓包 okhttp,Android端App抓包小工具[okhttp_poker]

    Android端App抓包小工具[okhttp_poker] Android端App抓包小工具[okhttp_poker] OkHttpLogger-Frida Frida 实现拦截okhttp的脚本 ...

  2. Android抓包方法之Win7笔记本Wifi热点+WireShark工具

    Android抓包方法 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第 ...

  3. Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包

    抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...

  4. batT脚本如何自动执行 adb shell 以后的命令(android抓包)

    bat脚本自动执行 adb shell 以后的命令 @echo off echo su > test.txt echo 其它命令(如 cd /data) >> test.txt ad ...

  5. Android 抓包 Fiddler Https443问题

    Android 抓包 Fiddler Https443问题 简单的Fiddler配置在这里不说了,可以查到 解决Android 手机App抓包出现443问题 方法一: 把app的targetSdkVe ...

  6. 当你写爬虫抓不到APP请求包的时候该怎么办?【高级篇-混淆导致通用Hook工具失效】...

    提示:因为高级篇以后的APP将无法使用很通用的方式处理,每种类型甚至是每个APP的反抓包处理方式都会有差别,所以这个系列以后会以[高级篇-具体类型]的形式来写. 这篇文章的主要内容是解决在遇到APP没 ...

  7. fiddler+android抓包工具配置使用

    今天临时增加一个工作,手机需要抓包,查看了不同的抓包工具,最后确定使用fiddler抓包工具进行操作,这里以android为例记录一下工具的配置和使用操作. fiddler的安装 网上有很多fiddl ...

  8. android抓包工具——使用fiddler4在安卓手机抓包

    Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...

  9. 手机抓包+注入黑科技HttpCanary——最强大的Android抓包注入工具

    HttpCanary HttpCanary是Android平台下功能最强大的抓包和注入工具,支持HTTP.HTTPS.HTTP2和WebSocket等多种协议. 无需Root,抓包时不会影响其它App ...

最新文章

  1. LeetCode Median of Two Sorted Arrays (DFS)
  2. Java注释 link_开源代码中注释中的那些a link p @ 是给什么编辑器用的????
  3. 在Scrollview中使用AutoLayout
  4. Mac os + Flask + PyCharm python开发环境集成
  5. java 进度条jsp,jsp进度条_jsp技巧
  6. python3编译成exe运行_python3.x的程序如何打包成exe可执行文件
  7. 人脸关键点: DCNN-Deep Convolutional Network Cascade for Facial Point Detection
  8. 《Outlier Analysis》书籍
  9. FireFox的插件范例,竟然有问题
  10. Cocos Creator 实现虚拟摇杆
  11. Navicat for MySQL 12.0.26 中文破解版 数据库管理工具
  12. python小学生入门教程-python 小学生教程|怎么让一个小学生学会Python?
  13. 点云与图像融合的深度学习方法综述
  14. log怎么用计算机,手机计算器log怎么用
  15. 计算机无法打开隐藏文件,处理怎么打开隐藏文件
  16. 9:JDBC-Java API 实战
  17. ipad查看本地文件html文件在哪里,ipad文件夹在哪里?小编手把手教你找到ipad文件夹在哪里...
  18. 26字母 导航 android,Android自定义View实现字母导航栏的代码
  19. 仙之侠道2玖章青门任务怎么做_仙之侠道Ⅱ攻略_仙之侠道Ⅱ柒章 任务全攻略 新手必看_牛游戏网魔兽地图专区...
  20. 04.修改Docker镜像源地址为网易镜像源地址

热门文章

  1. GEEer成长日记五:Sentinel-2计算NDVI并逐月时间序列分析
  2. OpenCV入门基础操作(二)----图像像素的处理
  3. tomcat8弱口令漏洞复现与getshell
  4. JAVA定时器 配置org.springframework.scheduling.quartz.CronTriggerBean
  5. linux命令连接sslftp,Linux命令行下登录ssl加密的ftp
  6. Caffe2 入门教程
  7. MSN进行时 msning
  8. C语言标准时间转时间戳
  9. matlab cell向量匹配向量,matlab – 使用cell2mat将数字矩阵与字符串向量(列标签)连接起来的问题...
  10. bzoj 1070【scoi2007】修车(网络流)