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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1499|回复: 3
收起左侧

[会员申请] 申请会员ID:小沫子【申请通过】

[复制链接]
吾爱游客  发表于 2023-9-8 12:54
1、申 请 I D:小沫子
2、个人邮箱:xiaomozi@mail.com
3、 原创技术文章:《windows下通杀wx小程序云函数实战》

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

先解包
我这里用的是 unveiler 最新版,下载地址 https://u.openal.lat
[Bash shell] 纯文本查看 复制代码
unveiler wx -sf "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77"

打开查看app.js 确实是云开发的

这种的想抓数据,只能用rpc了
需要改代码重新打包了
我们用 unveiler 重新解包一份不解析出wxml的
[Bash shell] 纯文本查看 复制代码
unveiler wx --no-parse -f "D:\WeChat Files\Applet\wx5cxxxxxxxx13347f\77\__APP__.wxapkg"


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

先开启 vConsole
将以下代码注入到onLaunch回调中
[JavaScript] 纯文本查看 复制代码
wx.setEnableDebug({enableDebug: true});


使用 unveiler 进行重打包,这里我还需要频繁改动,所以加上w参数
[Bash shell] 纯文本查看 复制代码
unveiler wx -wp "D:\WeChat Files\Applet\wx5c7585321513347f\77\__APP__"

然后重新打开小程序

会发现加载失败,这时候就要用frIDA
这里贴一个我自己用的frida脚本
[JavaScript] 纯文本查看 复制代码
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}`)
  },
})

这个脚本仅用于

\XPlugin\Plugins\RadiumWMPF\6945\extracted\runtime
开启firda然后重新打包就可以直接生效了,并且弹出了vConsole

接下载将所有云函数的请求都打印到控制台,或者写一个websocket服务发出去就行了,请求的话也可以使用websocket控制
搜了以下 wx.cloud.callFunction 发现有一大片
这时候可以注入一点代码到入口处
[JavaScript] 纯文本查看 复制代码
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了

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

Hmily 发表于 2023-9-11 11:24
I D:小沫子
邮箱:xiaomozi@mail.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

PS:登录后文章整理一下发到脱壳破解区。
小沫子 发表于 2023-9-12 13:57
小沫子 发表于 2023-9-12 13:58

本版积分规则

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

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

GMT+8, 2024-4-29 10:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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