微信小程序逆向 ... 未完待续

解包

打开这个文件夹

image-20250125110525774

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

image-20250125110619803

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

image-20250125110836144 image-20250125110851812

下面解包.wxapkg文件,这里介绍两种方式:

  1. 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"		// 这个一般行不通
      
  2. unveilr工具解包

​ unveilr 会在 目的地址处输出解包文件!

解包之后即可看到相关结构:

image-20250125134704848

逆向思路

一般都是先抓包(比如fiddler)找一下是否存在可用的接口,之后直接检索解包后代码中有没有一样的类名或者函数名。

参考: https://www.52pojie.cn/thread-1915411-1-1.html

unity打包的微信小程序

unity打包的微信小游戏的主要逻辑是在wasm文件中。

我们需要先获取 global-metadata.dat 文件

一般在 用户对应的微信id目录下的usr目录下的 __GAME_FILE_CACHE 缓存文件夹中会存在这样的文件:

image-20250125135123746

我们用unityweb把他解包即可拿到 global-metadata.dat 文件

下载unityweb解包文件

https://github.com/jozsefsallai/unityweb

解包命令:

unityweb unpack -i .\37f0c8548c21194d.webgl.data.unityweb.bin -o unpacked-bin
image-20250125135258696

Il2CppDumper 恢复符号:

Il2CppDumper.exe  .\wasmcode .\global-metadata.dat .\out

其中wasmcode文件就是这个,不过被我重命名了。

解包wxapkg后会看到 wasmcode、wasmcode1文件夹,其中wasmcode是主要的,wasmcode1是延迟加载的次要文件。

image-20250125135513875

不过unity打包的微信小程序的符号表恢复没这么简单,dump.cs中的函数地址记录的是序号,不是真实的地址偏移,我们还得自己另写脚本处理一下。

目前卡在这里,不知道如何获得 import::wasm_split::__wasm_split_getRedirBaseAdd的值

image-20250126111426092

猜测与同一目录下的 xxx.redirmem.bin文件有关,不过这个文件是未知文件格式,卡住了...

image-20250126111628666

参考:

https://www.52pojie.cn/thread-1936819-1-1.html

https://www.cnblogs.com/algonote/p/15596459.html

posted @ 2025-01-26 11:21  TLSN  阅读(1292)  评论(0)    收藏  举报