闲来无事分析了一下, 微信版本是8.0.43
准备工具
微信日志hook代码
Java.perform(function () {
const log = Java.use("com.tencent.mm.sdk.platformtools.Log");
log.i.overload('java.lang.String', 'java.lang.String', '[Ljava.lang.Object;').implementation = function(tag: string, format: string, ...args: any) {
console.info(tag, format, args);
}
log.w.overload('java.lang.String', 'java.lang.String', '[Ljava.lang.Object;').implementation = function(tag: string, format: string, ...args: any) {
console.warn(tag, format, args);
}
log.e.overload('java.lang.String', 'java.lang.String', '[Ljava.lang.Object;').implementation = function(tag: string, format: string, ...args: any) {
console.error(tag, format, args);
}
log.f.overload('java.lang.String', 'java.lang.String', '[Ljava.lang.Object;').implementation = function(tag: string, format: string, ...args: any) {
console.debug(tag, format, args);
}
});
核心日志
MicroMsg.JsApiLogin start login
MicroMsg.JsApiLogin onSceneEnd errType = %d, errCode = %d ,errMsg = %s 0,0,
MicroMsg.JsApiLogin stev NetSceneJSLogin jsErrcode %d 0
MicroMsg.JsApiLogin onSuccess !
MicroMsg.JsApiLogin resp data code [%s] 0e1U1KHa1Sp0qG0ripJa1QYvlB2U1KHm
可以看出, 最后一行得到的就是wx.login的code
在jadx搜索找到几个类
- com.tencent.mm.plugin.appbrand.jsapi.auth.JsApiLogin.i
- com.tencent.mm.plugin.appbrand.jsapi.auth.JsApiLogin.g
- com.tencent.mm.plugin.appbrand.jsapi.auth.g0.a
- com.tencent.mm.plugin.appbrand.jsapi.auth.h0.a
在com.tencent.mm.plugin.appbrand.jsapi.auth.g0.a这个函数了, 找到最后一个参数的实体类a50.c, 并且找到字符串"/cgi-bin/mmbiz-bin/js-login"
而在com.tencent.mm.plugin.appbrand.jsapi.auth.h0.a这个函数, 找到最后一个参数的实体类a50.d, 并且找到字符串"/cgi-bin/mmbiz-bin/js-login-confirm", 那就是说这是弹窗确认的API