吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8465|回复: 51
收起左侧

[Web逆向] windows下通杀wx小程序云函数实战

  [复制链接]
小沫子 发表于 2023-9-11 18:24
本帖最后由 小沫子 于 2023-9-11 18:30 编辑

本文章仅用于学习交流,请勿用于非法用途

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

1. 解包

  • 工具有不少
  • 我这里用的是 unveilr 最新版
unveiler wx -sf "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77"

2. 确定是云开发

  • 打开查看app.js 确实是云开发的
    1
  • 这种的想抓数据,只能用 rpc

3. 修改并重新打包

  • 需要改代码重新打包了
  • 我们用 unveilr 重新解包一份不解析出wxml
unveiler wx --no-parse -f "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77\__APP__.wxapkg"

1

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

  • 先开启 debug 模式

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

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

unveiler wx -wp "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77\__APP__"
  • 然后重新打开小程序
    1
  • 会发现加载失败,这时候就要用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}`)
  },
})

这个脚本仅用于RadiumWMPF6945的运行环境
1

  • 开启firda然后重新打包就可以直接生效了,并且弹出了vConsole
    1
  • 接下载将所有云函数的请求都打印到控制台,或者写一个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
1

点评

较老版本的RadiumWMPF打开小程序调试只需要命令行参数--enable-vconsole即可。 后续较高版本中禁用了这一特性。 https://www.52pojie.cn/thread-1789262-1-1.html  发表于 2023-9-12 12:21

免费评分

参与人数 24威望 +2 吾爱币 +123 热心值 +22 收起 理由
饮歌 + 1 谢谢@Thanks!
cub1c2 + 1 谢谢@Thanks!
philos + 1 我很赞同!
hakers + 1 谢谢@Thanks!
kingofking + 1 + 1 用心讨论,共获提升!
drivelin + 1 + 1 我很赞同!
Right_Hai + 1 + 1 鼓励转贴优秀软件安全工具和文档!
52pojie666z + 1 + 1 热心回复!
Bug0yzy + 1 + 1 少见的主题!
qiaoyong + 1 + 1 我很赞同!
wenshao1344 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
mcpan + 1 + 1 谢谢@Thanks!
10JQKA + 1 谢谢@Thanks!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xfwlwork + 1 + 1 太厉害了!很有用!正好适合我最近学习的知识
qweofg + 1 + 1 用心讨论,共获提升!
wshq + 1 + 1 谢谢@Thanks!
prince_cool + 2 + 1 我很赞同!
hanlaoshi + 1 + 1 谢谢@Thanks!
杨辣子 + 1 + 1 谢谢@Thanks!
Ram9943 + 1 + 1 我很赞同!
xianyucoder + 1 + 1 我很赞同!
漁滒 + 3 + 1 我很赞同!
两只小蜜蜂 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

周易 发表于 2023-9-12 19:50
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(小程序)。

小猫猫 发表于 2023-10-30 23:15
你好,看到你写的关于hook云函数的方式,十分感谢。
现在有个云托管,用的是
wx.cloud.callContainer,然后我用你的方式写的如下不起作用,

[JavaScript] 纯文本查看 复制代码
const oldCloud = wx.cloud;
const oriCF = oldCloud.callContainer
oldCloud.callContainer= function (config) {
    const _success = config.success
    config.success = function (res){
      console.log('callContainer===>',res);
      _success(res);
    }
    oriCF(config)
}


希望指点。
wasm2023 发表于 2023-9-12 11:38
longzhiye 发表于 2023-9-12 13:09
感谢楼主的无私奉献
lc125 发表于 2023-9-12 13:35
马克11111
 楼主| 小沫子 发表于 2023-9-12 13:52
wasm2023 发表于 2023-9-12 11:38
unveilr最新版在哪里可以下载到呢

https://u.openal.lat/
wyp123 发表于 2023-9-12 14:22
unveilr 竟然收费了
 楼主| 小沫子 发表于 2023-9-12 14:27
wyp123 发表于 2023-9-12 14:22
unveilr 竟然收费了

好像是的
culprit 发表于 2023-9-12 14:29

unveilr最后免费版本是多少
 楼主| 小沫子 发表于 2023-9-12 14:33
culprit 发表于 2023-9-12 14:29
unveilr最后免费版本是多少

不清楚,我用的时候就这样了,我在GitHub上看到的,那时候就只有一个链接地址
wasm2023 发表于 2023-9-12 15:05

楼主,麻烦回复下私信
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-28 00:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表