记微信WMPF8518(x32)开Devtools/vConsole

通过Frida Hook微信32位版本WMPF进行开小程序vConsole和网页Devtools

环境

微信版本: 3.9.12.56 (x32最后一个版本, 吾爱上有强登工具)

WMPF版本: 8518 (x32)

Frida Hook

Hook点特征: 参照x0tools文章

注意, Hook需使用32位Frida

开网页Devtools

Hook时机: 启动时 (建议直接Frida启动)

原理: 微信在启动时会带参数拉起WeChatAppEx.exe , 替换参数注入xweb-enable-inspect即可 (高版本不确定有没有, 应该是似了)

var cpsPtr = Process.getModuleByName('kernel32.dll').getExportByName('CreateProcessW');
var cps = new NativeFunction(cpsPtr,'bool', ['pointer', 'pointer', 'pointer', 'pointer', 'bool', 'uint32', 'pointer', 'pointer', 'pointer', 'pointer']);
console.log('1?')


Interceptor.attach(cpsPtr, {
    onEnter: function (args) {
        this.cmdline = args[1];
        let aaa = this.cmdline.readUtf16String();
        aaa = aaa.replaceAll("--log-level=2", "--log-level=0 --xweb-enable-inspect=1");
        this.cmdline.writeUtf16String(aaa);
    },
    onLeave: function (retval) {
        console.log("ARG:", this.cmdline.readUtf16String());
    }
});

开小程序vConsole

Hook时机: 随便 (尽量开小程序前Hook, 如果在开之后Hook需要重载小程序)

原理; 启动小程序会走有LaunchApplet 特征的函数, 栈上有关于vConsole的JSON, 修改JSON即可

注意: 需要使用Frida附加到WeChatAppEx主进程, 且vConsole中云函数(wx.cloud)似乎不可用! 功能相比原生Devtools受限!

var LaunchAppletPtr = ptr(0x2f23321);
let HtmlPtr = ptr(0x2ded67f)
console.log('1?')
Interceptor.attach(HtmlPtr, {
    onEnter(args) {
        console.log('Detect web')
        this.context.eflags |= (1 << 6); // 强制 ZF=1
    }
})
Interceptor.attach(LaunchAppletPtr, {
    onEnter(args) {
        console.log('Launched a mini program!')
        let ComJsInfo = this.context.esp.add(84)
        var ps = ComJsInfo.readPointer()
        var s = ps.readUtf8String()
        var s1 = s.replaceAll('"enable_vconsole":false', '"enable_vconsole": true').replaceAll('"frameset":false', '"frameset": true')
        ps.writeUtf8String(s1)
    }
})

也没人告诉我微信Devtools打开这么简单啊... 我以前还以为要多难... 果然动态调试一把嗦是好的...?

LICENSED UNDER CC BY-NC-SA 4.0
Comment