解包
打开这个文件夹

下图中,wxid_21arhynucfka22
表示了不同微信号的id。打开的小程序缓存会被放入Applet
文件夹中,比如图中wx31a9c726536cdacc
就是我之前打开过的 微信小程序下载的缓存。

同时,在wechat目录下也存在所有账号公用的小程序缓存,公用的Applet
文件夹,我们可以在这里找到对应的 .wxapkg
包


下面解包.wxapkg
文件,这里介绍两种方式:
-
wxapkg
工具解包-
工具地址: https://github.com/wux1an/wxapkg
-
使用方法:
D:\tlsn\BTools\RE\wxapkg\wxapkg.exe scan -r "D:\tlsn\SoftWare\wechat\Wechat_file\WeChat Files\Applet" 或者: D:\tlsn\BTools\RE\wxapkg\wxapkg.exe scan -r "D:\tlsn\SoftWare\wechat\Wechat_file\WeChat Files\wxid_21arhynucfka22\Applet" // 这个一般行不通
-
-
unveilr
工具解包-
工具地址: https://github.com/broken5/unveilr,需要注意的是,这个工具已从开源转为闭源。
-
使用方法:
D:\tlsn\BTools\RE\unveilr-master\3-unveilr\unveilr.exe wx -f "D:\tlsn\SoftWare\wechat\Wechat_file\WeChat Files\Applet\wxae65611dd1391ed0\49"
-
unveilr 会在 目的地址处输出解包文件!
解包之后即可看到相关结构:
逆向思路
一般都是先抓包(比如fiddler)找一下是否存在可用的接口,之后直接检索解包后代码中有没有一样的类名或者函数名。
参考: https://www.52pojie.cn/thread-1915411-1-1.html
unity打包的微信小程序
unity打包的微信小游戏的主要逻辑是在wasm文件中。
我们需要先获取 global-metadata.dat
文件
一般在 用户对应的微信id目录下的usr目录下的 __GAME_FILE_CACHE
缓存文件夹中会存在这样的文件:

我们用unityweb把他解包即可拿到 global-metadata.dat
文件
下载unityweb解包文件
https://github.com/jozsefsallai/unityweb
解包命令:
unityweb unpack -i .\37f0c8548c21194d.webgl.data.unityweb.bin -o unpacked-bin

Il2CppDumper
恢复符号:
Il2CppDumper.exe .\wasmcode .\global-metadata.dat .\out
其中wasmcode文件就是这个,不过被我重命名了。
解包wxapkg
后会看到 wasmcode、wasmcode1文件夹,其中wasmcode是主要的,wasmcode1是延迟加载的次要文件。
不过unity打包的微信小程序的符号表恢复没这么简单,dump.cs中的函数地址记录的是序号,不是真实的地址偏移,我们还得自己另写脚本处理一下。
目前卡在这里,不知道如何获得 import::wasm_split::__wasm_split_getRedirBaseAdd
的值
猜测与同一目录下的 xxx.redirmem.bin文件有关,不过这个文件是未知文件格式,卡住了...
参考:
https://www.52pojie.cn/thread-1936819-1-1.html
https://www.cnblogs.com/algonote/p/15596459.html