Mon Jun 26 2023
Rebirth: Mr Wang 解锁全CG
#86
/
samyyc
/
共 2220 字
/
1070日 前更新
Rebirth: Mr Wang 解锁全CG
快速教程
- 下载 E70E04A0-D73E-4A80-A51B-FBB6F7C40F12.dat
- 重命名为 GameFrameworkSetting.dat
- 先关闭游戏,然后放入(或替换)
%HOMEPATH%/AppData/LocalLow/DSGame/Rebirth Mr Wang文件夹下 - 启动游戏,点击回想相册,理论上来说应该已经解锁了
实现过程
星宇来了想玩点黄油,懒得过剧情了想着直接看CG玩,于是开始找解锁全CG的教程,
找了一圈也没找到,所以就开始自己探索通往涩涩的道路,
这类黄油一般都是Unity做的,直接找到%HOMEPATH%/AppData/LocalLow/DSGame/Rebirth Mr Wang 路径,路径下有三个文件,
GameFrameworkSetting.dat Label.sav 和 Player.log . 经过一番摸索后发现GameFrameworkSetting.dat里大概长这样:
由于没接触过Unity,所以我暂时没管这堆乱码,去掉这些乱码应该是一个JSON格式,可以看到Revive下有8个JsonObject,每个都有
IsLock 字段,正好对应8个CG,所以我直接推测这就是控制CG解锁的内容
但是CG未解锁的时候IsLock不应该是true吗(划掉)
所以我直接把这8个false全改成了true,原以为这样就可以快快乐乐的开冲了,但是启动游戏后发现回想相册里啥也没有,看了一眼Player.log,报了读取文件的错
又试了一会依然没用,只能开始想办法逆向读取和写入这个文件的代码了
根据Player.log里的报错记录,可以看见加载里用到了StarForce这个类,在Assembly-CSharp.dll这个dll里可以找到,然后顺藤摸瓜一路找到DefaultSetting这个类里面的反序列化方法
可以看到这里就是一些基本的读取操作,再追踪传进来的这个BinaryReader,在GameFrameworkSerializer里:
可以看到这个reader在传进来前被读取了四次,最后进入callback,也就是上面的Deserialize方法
接下来写一个读取的代码:
CG类
public class CG
}
读取类
using LitJson;
};
这样读取并修改里面的内容就完成了
然后要把修改完后的内容再写回去
找到GameFrameworkSerializer类里的Serialize方法:
public bool Serialize(Stream stream, T data, byte version)
}
可以看到这里先写了3个字节的header,然后写了一个version,这个header是在GameFramework的代码里直接设置的,version直接读取原文件的第四个字节应该就好了(前面用了version这个变量存)
header可以在GameFramework的DefaultSettingSerializer里找到:
然后写入设置部分的代码可以在DefaultSetting里找到,这也是作为一个callback使用的
有了这些之后,就可以开始写写入的代码了
FileStream writeStream = new FileStream("E:/WORKSPACE/rebirth_crack/GameFrameworkSetting.dat", FileMode.Open, FileAccess.ReadWrite);
}
接下来这个GameFrameworkSetting.dat就是解锁CG之后的文件了,可以正常使用
