某评 mtgsig1.2 vx 小程序加密分析

声明

本文章中所有内容,仅提供逆向工程师一个思路,不提供源码。如看文章仍不能自行解决的,可以私信答疑。
本文章仅供学习交流使用,不得用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

结果展示

mtgisg 各个参数以及长度均正确在这里插入图片描述

逆向难点

  1. vx 开发者窗口调试
  2. vx 环境检测,使用开发者窗口,调试搜索接口,页面卡住刷不出来,后端接口返回 403
  3. 补环境
  4. JS 代码混淆
  5. 嵌套的 switch-case 语句
  6. 多处自执行的坑
  7. 几个隐藏的关键参数(全网唯一提到某个导致403的值)

mtgsig1.2 各个key分析

  • a1 固定值,版本号
  • a2 时间戳,参与 a4/a5 计算
  • a3 环境信息加密值,某个环境下是固定的
  • a4 【不固定】,与 a2/a5 有关
  • a5最重要】与 a2/a6/运行环境编码/jsvpm运行次数/小程序启动时间戳有关
  • a6 【不固定】环境加密值,vx 后台生成,可以通过补环境得到,但是稍有不慎就出错。也可以 rpc 获取
  • a7 固定值,wxid
  • x0 固定值 3
  • d1 【不固定】 上述参数算出来后简单运算得到

另一个对象 Qa

调试过程中,有另一个非常重要的对象,Qa

  • b1 固定值,抓包即可获取
  • b2 接口路径,抓包可以获取
  • b6 固定值,当前用户(不一定是登录用户)的 openid/cookieid…
  • b7 非常重要,时间戳,这不是上述 a2 那个时间戳。获取该值需要一定的技巧
  • b8 非常重要 ,js 执行计数器
    之所以强调 Qa 以及各个值的重要性,是因为,逆向的过程中,需要用到该值,去推断出导致 403 的隐藏的环境编码。

神秘且令人讨厌的 403

使用 devtools 过程中,去搜索栏搜索某个关键字后,页面一直打转,无法加载,后端接口返回 403 。
关掉 devtools 后,搜索正常返回。
没错,devtools 触发了环境检测。
在逆向调试过程中,发现,有一个 f 值,其参与了 m值的计算,而该 m值又参与了最后 mtgsig.a5(代码中 x值)的计算。
查看 f 生成的代码
在这里插入图片描述
其中 n(131) 是 env, 因此推测 f值就是环境编码。 devtools 抓包的时候,可以抓到多个值,如 48, 50等。而这些值,都是打开调试工具的错误值。如何找到 f 值,暂且不表,我们继续往下看。

解密环境编码 f

关键中间值: m值的算法

 var p = ne(d = 4294967295 & i)
    , g = new Uint8Array(ee(y)[n(160)](p))
    , v = me[n(157)](g)
    , m = ce(v[n(531)](0, 15));
    
    m[7] = 255 & (f ^ bc(p)),
    m[n(87)][n(480)](m, p),
    m[n(87)][n(480)](m, ne(4294967295 & bc(m)))

上述生成 g值的参数 y,就是最终的 mtgsig.a6。
从上述代码可以发现,关键中间值 m 仅仅和 时间戳 i、y(mtgsig.a6) 以及 环境编码 f 有关。而前两个参数,都是直接体现在最终 的mtgsig 中的。因此可以通过最总的 mtgsig 反推 f 值。

20240909更新:

源码又看了几遍,发现很多参数可以随机生成,环境也不需要了【笑哭】
有空再继续写吧。再往后的内容过于干货,白嫖党可能要白嫖失败了…

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值