前言
在进行逆向分析时候,抓包有很多种方式,今天带来了一种新方法对基于OKHttp实现的网络请求进行抓包,该方法有一定的局限性。
Frida
Frida是一款轻量级的Hook框架,Java与Native层只需几行代码即可进行Hook,本文就是基于该Hook框架实现。官方网站:https://frida.re/docs/home/
原理
熟悉Android开发的应该知道,okhttp中有一个重要的设计那就是拦截器。通过拦截器可以监测到所有关于连接的信息。本文就是在原有拦截器上添加自己的拦截器进行网络抓包
Frida 简单实现 Interceptor
var imple = {
}
imple[intercept.getName()] = function (chain) {
var request = chain[request_chain]();
var res = chain[process_chain](request)
console.log("请求:",request);
return res;
}
//注册MyInterceptor
var http = Java.registerClass({
name: "okhttp3.MyInterceptor",
implements: [Java.use(Interceptor)],
methods: imple
})
修改OkHttpClient成员
//内存中寻找OKHttpClient对象
Java.choose(Client, {
onMatch(i) {
interceptors.forEach(e => {
//反射修改interceptors,networkInterceptors
e.setAccessible(true);
var list = Java.cast(e.get(i), Java.use("java.util.List"))
var arr = ArrayList.$new()
for (let i = 0; i < list.size(); i++) {
const element = list.get(i);
if (element.toString().indexOf("okhttp3.MyInterceptor") == -1) {
arr.add(eleme