成品网站地址 http://x.bensee.com.cn/
主要: Frida, Xposed, Jadx(反编译APK), Charles(网络抓包工具, HTTPS), 雷电模拟器, Java, Android
附加: React, Websocket
上述工具使用方法自行寻找,这里不做教学, 给个star, 提issue一起交流
- 看是否使用
OKHttpClient
、Retrofit
- 看有没有网络请求工具类
NetworkUtils
、HttpUtils
- 使用 Frida 对可能的地方进行Hook,在App上操作下,看是否有日志打印出来
以 Retrofit
网络请求框架为例,
- 使用Frida 对
retrofit2.Retrofit#create
进行Hook 打印简单日志。 验证是否为Retrofit
框架- 对
okhttp3.OkHttpClient#newCall
进行Hook 看是否每次请求都会有日志
App 源开发者会在网络请求上签名过滤器。破解so 或者加签规则比较麻烦。我们直接从源头上下手。
- 查看
retrofit2.Retrofit
源码得知, 里面有一个final okhttp3.Call.Factory callFactory
的属性 我们自己写一个Android程序。获得到callFactory
后发现他可以直接进行网络请求,并且附加在okHttpClient上的过滤器都会生效okhttp3.Call.Factory callFactory = x; Request.Builder builder = new Request.Builder(); builder.url("https://www.baidu.com"); builder.get(); String response = callFactory.newCall(builder.build()).execute().body().string();
- 使用
Xposed
对retrofit2.Retrofit#create
进行HookXposedHelpers.findAndHookMethod("retrofit2.Retrofit", lpparam.classLoader, "create", Class.class, new > XC_MethodReplacement() { @Override protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { Object o = XposedBridge.invokeOriginalMethod(param.method, param.thisObject, param.args); Object callFactory = XposedHelpers.getObjectField(param.thisObject, "callFactory"); return o; } });
- 使用Xposed的规范,进行类反射调用Apk内对象
Object builder = XposedHelpers.newInstance(XposedHelpers.findClass("okhttp3.Request.Builder", classLoader)); builder = XposedHelpers.callMethod(builder, "url", "https://www.baidu.com"); builder = XposedHelpers.callMethod(builder, "get"); Object request = XposedHelpers.callMethod(builder, "build"); Object call = XposedHelpers.callMethod(callFactory, "newCall", request); Object response = XposedHelpers.callMethod(call, "execute"); Object body = XposedHelpers.callMethod(response, "body"); System.out.println(body)
- 我使用过的Frida调试脚本,因为不同版本的apk进过混淆后,可能会类名发生变化。请自行替换
- Xposed、和部分App的安装包 https://pan.baidu.com/s/1QEn2POM-30PbEa7oEz-3xg 提取码:tuvh
- frida 官网 https://frida.re/
- 简书-Xposed开发初体验 https://www.jianshu.com/p/275a45b8095b
- 查看当前活动的Activity
adb shell dumpsys activity | grep -i run
- Jadx 反编译,反混淆,不编译资源包
jadx --show-bad-code --deobf -r