(结果解决)单机游戏傲慢千金与淫魔的诅咒的解码求助

RPG Maker MV引擎,

一般拿到System.json中的key就可以解了,

但是这次System.json中好像套了一层编码(所有json都套了一层),尝试了一般的base64解码没解出来,目前没什么头绪。

https://pan.baidu.com/s/12Lr_2cZBtV3y3Xis3eoSQQ?pwd=0721

解压码cracg.xyz

System.rar (15.8 KB)

可能在js里,但是我只找到了加载json的,但是没找到解码的地方。

更新一下:找到了对json base64编码的可疑地方:

rpg_managers.js
StorageManager.saveToLocalFile = function(savefileId, json) {
    var data = LZString.compressToBase64(json);
    var fs = require('fs');
    var dirPath = this.localFileDirectoryPath();
    var filePath = this.localFilePath(savefileId);
    if (!fs.existsSync(dirPath)) {
        fs.mkdirSync(dirPath);
    }
    fs.writeFileSync(filePath, data);
};

StorageManager.saveToWebStorage = function(savefileId, json) {
    var key = this.webStorageKey(savefileId);
    var data = LZString.compressToBase64(json);
    localStorage.setItem(key, data);
};

不过好像是压缩了再编码的。

找到了可疑解码位置:

rpg_managers.js
StorageManager.loadFromLocalFile = function(savefileId) {
    var data = null;
    var fs = require('fs');
    var filePath = this.localFilePath(savefileId);
    if (fs.existsSync(filePath)) {
        data = fs.readFileSync(filePath, { encoding: 'utf8' });
    }
    return LZString.decompressFromBase64(data);
};

rpg_managers.zip (13.7 KB)

LZString.decompressFromBase64(data);

这个好像是先解码再解压缩,但是我尝试解码的时候失败了,不能解码游戏的json,但是自己的测试文件可以解码。不知道有没有大佬可以解惑(js真不熟 :sob:

另外LZString库1.5和1.4的压缩编码方式好像有不同。猜测应该是用的1.4及一下的LZString,因为1.5的base64编码无法被一般的base64工具解码,1.4及以下的可以。

找到了游戏js目录下lz-string.js
lz-string.zip (2.0 KB)
不过尝试解码解压缩依然失败,猜测还有额外步骤

又看了看,虽然system.json没还原出来,但是图片音频没加密。。。 :innocent: :sleeping: :sleeping: :sleeping: