windows下通杀wx小程序云函数实战

查看 182|回复 11
作者:小沫子   
本文章仅用于学习交流,请勿用于非法用途

试过的都知道, 用了云函数的小程序抓包是拿不到结果的
找了个使用云开发做的小程序 《某问卷系统》

1. 解包
  • 工具有不少
  • 我这里用的是 unveilr 最新版

    unveiler wx -sf "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77"
    2. 确定是云开发
  • 打开查看app.js 确实是云开发的
  • 这种的想抓数据,只能用 rpc 了

    3. 修改并重新打包
  • 需要改代码重新打包了
  • 我们用 unveilr 重新解包一份不解析出wxml的

    unveiler wx --no-parse -f "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77\__APP__.wxapkg"


  • 先找到入口,一般在 app-service.js 这个文件里,搜索 "app.js"

  • 先开启 debug 模式

  • 将以下代码注入到onLaunch回调中

  • 使用 unveilr 进行重打包,这里我还需要频繁改动,所以加上w参数

    unveiler wx -wp "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77\__APP__"
  • 然后重新打开小程序
  • 会发现加载失败,这时候就要用frida了
  • 这里贴一个我自己用的frida脚本

    const arr2str = (bytes) => String.fromCharCode(...new Uint8Array(bytes))
    const targetPtr = Module.getBaseAddress('WeChatAppEx.exe').add('0x2C1CBB8')
    Interceptor.attach(targetPtr, {
      onEnter(args) {
        void args
        const length = 0x20
        const rdx = this.context.rdx
        const rbp = this.context.rbp
        const p1 = rdx.readPointer()
        const p2 = rbp.readPointer()
        // 将原始 MD5 的数据覆盖到当前 MD5
        const oriMd5 = p1.readByteArray(length)
        const curMd5 = p2.readByteArray(length)
        const m1 = arr2str(curMd5)
        const m2 = arr2str(oriMd5)
        if (!m2 || m1 === m2) return
        p2.writeByteArray(oriMd5)
        console.log(`[+] Replaced: ${m1} -> ${m2}`)
      },
    })
    这个脚本仅用于RadiumWMPF为6945的运行环境

  • 开启firda然后重新打包就可以直接生效了,并且弹出了vConsole
  • 接下载将所有云函数的请求都打印到控制台,或者写一个websocket服务发出去就行了,请求的话也可以使用websocket控制
  • 搜了以下 wx.cloud.callFunction 发现有一大片
  • 这时候可以注入一点代码到入口处

    const oldCloud = wx.cloud;
    const oriCF = oldCloud.callFunction
    oldCloud.callFunction = function (config) {
        const _success = config.success
        config.success = function (res){
          console.log('callFunction===>',res);
          _success(res);
        }
        oriCF(config)
    }
    然后重新打开就可以看到代码已经生效
    利用重打包功能,剩下的事情就简单了,直接接个websocket出去就能实现rpc了

    程序, 函数

  • 小沫子
    OP
      


    chendipang 发表于 2023-9-13 01:45
    最新版本3.9.6.33  好像不能这样调试了

    你可以把哪个 RadiumWMPF 里面 8000 以上ID 的删掉,然后重新打开微信就能回滚到 6954 了
    反正我是这么操作的
    周易   


    ReichesGeld 发表于 2023-9-12 18:54
    @周易 哥,麻烦问一下enable-chrome-inspector可以使用得前提是微信版本多少呢
    大约……自从WMPFRuntime更新为RadiumWMPF的时候就有了吧。
    虽然普通用户往往感受不到,但是微信内置浏览器的更新实际是较为频繁的。当前的LTS版本如下。
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/WMPFRuntime_1.0.1.287_V4676.zip
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/RadiumWMPF_2.0.6.125_x86_V6938.zip
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/RadiumWMPF_2.0.8.33_x64_V8379.zip
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/RadiumWMPF_2.0.8.35_x64_V8391.zip
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/RadiumWMPF_2.0.9.75_x64_V8423.zip
    https://dldir1.qq.com/weixin/Windows/XPlugin/Package/RadiumWMPF_2.0.9.85_x64_V8431.zip
    同时支持--enable-chrome-inspector(公众号)和--enable-vconsole(小程序)可能是2.0.6版本的事情了。后续高版本中移除(隐藏)了--enable-vconsole(小程序)。
    wasm2023   

    unveilr最新版在哪里可以下载到呢
    longzhiye   

    感谢楼主的无私奉献
    lc125   

    马克11111
    小沫子
    OP
      


    wasm2023 发表于 2023-9-12 11:38
    unveilr最新版在哪里可以下载到呢

    https://u.openal.lat/
    wyp123   

    unveilr 竟然收费了
    小沫子
    OP
      


    wyp123 发表于 2023-9-12 14:22
    unveilr 竟然收费了

    好像是的
    culprit   

    unveilr最后免费版本是多少
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部