非标准包 game.rgss3a 的打开方法 | 2023 年实测

写在前面:最近在玩 RPG 游戏,想拆一个 Game.rgss3a 包,在网上找了很久的拆包方法,感觉写的比较凌乱,我来给大家整理一下吧。不过我本人的技术能力也很差,不确定说的是不是对的,就当是给大家提供几个方法,大家都自己试一下吧

先说 Game.rgss3a 是什么。我有个收集 RPG 游戏 CG 的习惯,但是对游戏画面截图,肯定会对画质有影响,我还是愿意追求一下原图。所以我玩完游戏后会从游戏文件里找 CG。CG 图一般都会打包成其他格式,不直接对玩家开放。以前我遇到的大多是 .rpgmvp 格式的文件,这次遇到的是 .rgss3a 文件,以前的方法就不好使了。

  1. 谷歌到了一个网站,但是不太好用,不仅速度慢,而且不能用。不过也可能是我这里的问题,大家可以再自己尝试一下。https://www.ezyzip.com/convert-rgss3a-to-zip.html#

  2. 我在 http://www.winwin7.com/soft/7843.html 网站下载了一个解包软件,发现是可用的。效果图:
    非标准包 game.rgss3a 的打开方法 | 2023 年实测_第1张图片
    从这种所谓的软件网站下载软件是有风险的,但是我没找到这个软件的原发布地址,故只能冒着中病毒的风险 从这里下载。

  3. https://tieba.baidu.com/p/6700522560 介绍了一种解非标准包的方法,但是里面所谓的 sck2pack.py 文件 没有说清楚,这里我找到了,分享给大家 https://gist.github.com/dogtopus/a9eee9e9f513d4975ea5cac252d406cc

#!/usr/bin/env python3

import sys
import struct

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print('Usage:', sys.argv[0], '')
        sys.exit(1)
    hdr = struct.Struct('<8sI')
    with open(sys.argv[1], 'rb+') as f:
        header = hdr.unpack_from(f.read(12))
        if header[0] != b'Fux2Pack':
            print('No fuxxed pack to fsck. Stop')
            sys.exit(1)
        # Old and good number theory
        metadata_key = ((header[1] - 3) * 0x38E38E39) & 0xffffffff
        print(hex(header[1]), '->', hex(metadata_key))
        f.seek(0)
        f.write(hdr.pack(b'RGSSAD\x00\x03', metadata_key))
    print('Fscked. Good luck.')
  1. 后来发现,已经有作者把 sck2pack.py 集成进新的工具里了,作者博客见:https://usaginya.lofter.com/post/1d56d69b_1ca96789b 。使用该作者发布的工具也可以拆包。(不过该作者的工具会引起 windows安全中心报毒,谨慎使用)

2023年1月19日星期四

你可能感兴趣的:(杂货铺,RPG,拆包)