-
-
利用frida主动调用小程序云托管API
-
发表于:
2024-12-19 15:28
46054
-
好久没有碰Android逆向了,有1年多了,基本都生疏了,前来复习一下;
本着研究学习的方向,探索Wx小程序云托管的调用机制;
Charles发现云托管的API没办法直接抓包,似乎用的是内部的通道进行通信的,所以只能尝试往小程序jsapi方向下手。
在开始之前,需要先把小程序代码脱出来。
673K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6%4N6i4R3I4j5h3&6Q4x3V1k6%4P5r3q4H3K9$3M7`.
在GitHub上无意中找到的。该项目由go编写的,非常方便,直接扫描电脑上缓存的小程序并且还有解压

在图上发现该小程序是调用 t.cloud.init 进行初始化云托管,随后通过t.cloud.callContainer来实现调用接口。
把wechat.apk拖入到jadx-gui进行分析,并尝试检索关键词,callContainer 关键字。

但是很遗憾,没有搜索到任何结果,并且抓不到数据包,简单的方式基本上找不到任何有用的结果。
尝试转变思路,需要尝试搜索一些关键词不是很常见但可能小程序会调用到的,因为如果搜索常见关键字,可能会导致非常多的结果,也同样无从下手。
最后我选择搜索了wx小程序的一些常用的函数名称,如:getStorageSync

接着直接复制frida的hook代码片段,直接hook查看

然后去小程序一顿乱操作,可以看到已经hook到了。
随之我们打印堆栈,往上翻,看看能不能找到wx和小程序的交互处。

打印堆栈后,发现 com.tencent.mm.plugin.appbrand.jsapi.p.proceed 比较不顺眼,可以进它进行hook尝试

刚才的调用堆栈是
也就是我查看的proceed,接下来应该会往 u.P 走
所以简单阅读下代码,发现下面这行代码进行了一个json的返回
由于proceed没有提供传入参数,所以直接hook r.D 这个方法里面,看看他的参数是什么?

上面图上的打印就是 r.D 的参数和返回值,我在进行hook的时候,随意滑动了一下小程序和触发一些接口。
其中这一串我发现似乎就是小程序云托管调用的API
[培训]科锐逆向工程师培训第53期2025年7月8日开班!