🛫 系列文章导航
▒ 目录 ▒
🛫 导读
开发环境
| 版本号 | 描述 |
|---|
| 文章日期 | 2024-03-24 | |
| 操作系统 | Win11 - 22H2 | 22621.2715 |
| node -v | v20.10.0 | |
| npm -v | 10.2.3 | |
| 夜神模拟器 | 7.0.5.8 | |
| Android | 9 | |
| python | 3.9.9 | |
| frida | 16.2.1 | |
| frida-tools | 12.3.0 | |
| objection | 1.11.0 | |
| | |
1️⃣ 代码介绍
okhttp3主逻辑
public class example {
private static final String TAG = "r0ysue666";
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new LoggingInterceptor())
.build();
void run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.header("token","r0ysue")
.build();
client.newCall(request).enqueue(
new Callback() {
@Override
public void onFailure(Call call, IOException e) {
call.cancel();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG, response.body().string());
}
}
);
}
}
拦截器
Response getResponseWithInterceptorChain() throws IOException {
List<Interceptor> interceptors = new ArrayList<>();
interceptors.addAll(client.interceptors());
interceptors.add(retryAndFollowUpInterceptor);
interceptors.add(new BridgeInterceptor(client.cookieJar()));
interceptors.add(new CacheInterceptor(client.internalCache()));
interceptors.add(new ConnectInterceptor(client));
if (!forWebSocket) {
interceptors.addAll(client.networkInterceptors());
}
interceptors.add(new CallServerInterceptor(forWebSocket));
Interceptor.Chain chain = new RealInterceptorChain(interceptors, null, null, null, 0,
originalRequest, this, eventListener, client.connectTimeoutMillis(),
client.readTimeoutMillis(), client.writeTimeoutMillis());
return chain.proceed(originalRequest);
}
2️⃣ newCall自吐
自吐frida脚本编写
Java.perform(function() {
var OkHttpClient = Java.use("okhttp3.OkHttpClient")
OkHttpClient.newCall.implementation = function (request) {
var result = this.newCall(request)
console.log('[newCall] request = ', request.toString())
return result
};
});
验证步骤
3️⃣ 拦截器自吐
获取dex文件
自吐frida脚本编写【通用高效】
Java.perform(function () {
Java.openClassFile("/data/local/tmp/okhttp3logging.dex").load();
var MyInterceptor = Java.use("com.r0ysue.okhttp3demo.LoggingInterceptor");
var MyInterceptorObj = MyInterceptor.$new();
var Builder = Java.use("okhttp3.OkHttpClient$Builder");
console.log(Builder);
Builder.build.implementation = function () {
this.networkInterceptors().add(MyInterceptorObj);
return this.build();
};
console.log("hook_okhttp3...");
});
验证步骤
📖 参考资料