本帖最后由 wxy1343 于 2022-9-18 18:57 编辑
首先找到羊了个羊源码分析一下,通过抓包可以知道羊了个羊的域名是easygame2021.com,直接grep搜索一下找到源码
解包完可以看到这些文件
打开game.js搜索一下clothes可以找到这些代码应该是读取皮肤数据的
搜索一下SHEEPCLOTHESDATA看看是什么
这些应该都是保存在本地的字段名称
那么接下来只要找到这些字段被保存在哪里就行了
用grep搜索一下SHEEPCLOTHESDATA
可以找到一个AppBrandMMKVStorage开头的文件
打开之后发现这是一个二进制文件
尝试修改字符不改变文件大小但是失败了游戏无法运行
可以在mmkv目录发现crc数据校验文件,难怪直接修改不行了
研究了一下可以知道这是腾讯的
尝试编译了一下可以成功打开这个文件,但是并没有读取到键值,不知道是什么原因有懂的可以说一下
直接修改不行但是可以通过间接修改,可以通过hook小程序读写mmkv相关的函数来实现
通过apktool反编译微信,搜索AppBrandMMKVStorage
分析一下找到m这个构造函数应该就是初始化MMKV的
所以只要在初始化完后拿到this.thf就可以随意读取MMKV了
用JsHook简单写个脚本测试一下
common.hookConstructor('com.tencent.mm.plugin.appbrand.appstorage.m', ['long', 'java.lang.String'], null, function (param) {
var SHEEPCLOTHESDATA = 'wx141bfb9b73c970a9__SHEEPCLOTHESDATA';
var mmkv = common.getObjectField(param.thisObject, 'thf');
var clothes_data_str = common.callMethod(mmkv, 'getString', [SHEEPCLOTHESDATA, '']);
if (clothes_data_str == '') return;
common.log(clothes_data_str);
var clothes_data_arr = JSON.parse(clothes_data_str.substring(12));
clothes_data_arr.forEach(function (sheep, i) {
common.log(i, sheep.name);
sheep.unlock = true;
});
clothes_data_str = clothes_data_str.substring(0, 12) + JSON.stringify(clothes_data_arr);
common.log(clothes_data_str);
common.callMethod(mmkv, 'putString', [SHEEPCLOTHESDATA, clothes_data_str]);
clothes_data_str = common.callMethod(mmkv, 'getString', [SHEEPCLOTHESDATA, '']);
common.log(clothes_data_str);
});
查看日志可以看到已经成功读取到皮肤了
进入游戏查看一下皮肤已经全部解锁
|