技术幕后

Reverse engineering notes

一次静态逆向的全部产出

Extraction stats
0个 .g00 图像文件解码
0个 .owp 音频还原
0个场景块解密解压
0条字符串
0个产物文件
0失败数(全部成功)

解密链路

Decryption pipeline
Scene.chs / Gameexe.chs
SiglusEngine 数据
→
第①层异或
Fixed256(GAMEEXE_KEY / SCENE_KEY)
→
第②层异或
Key16 = 08 63 80 0B 79 E9 51 F1
E7 2A E7 60 F0 7C 97 4E
→
LZSS 解压
[u32 comp][u32 org][payload]
→
517 个场景块 + 配置文本
0 失败
# 两层异或(angou)的核心一行,Key16 由引擎 .data 段 16 个地址逐字节拼出
plain[i] = enc[i] ^ Fixed256[i % 256] ^ Key16[i % 16]

# .owp 音频:逐字节单密钥异或的 Ogg Vorbis,对首 4 字节试出 key = OggS
for key in range(256):
    if bytes(b ^ key for b in head) == b'OggS': return key  # 本作 68 个文件全为 0x39

资源格式

Formats

.g00 — 图像(4 种子类型)

0:LZSS32 直图 · 1:调色板+索引 · 2:多 cut+chip 合成(BGRA)· 3:异或表+JPEG。立绘(bs1_/bs2_/bs3_ 三档+f_bs 表情)与 CG/背景/特效/系统图共 7,897 个文件,全部还原为 PNG。

.scn — 场景脚本

解密解压后含字符串表(SLO/SCNT/SLS)与命令字节码;字符串按 (28807*s)&0xffff 逐字符异或。517 个场景块覆盖序章→共通→八条线路→终章→幻想部分。

.owp / .ovk — 音频

单字节异或的 Ogg Vorbis。68 首 BGM(key=0x39)已全部还原;koe\*.ovk(413 个语音包)与 mov\*.omv(93 段视频)不在本次提取范围内。

引擎结论

汉化版 SummerPocketsRB_cn.exe(9,607,680 B)为定点重编译引擎,只读取 .chs / *_cn.dbs / *_cn.g00 与 save_cn\,完全不读日文原版 Scene.pck。

这个网站是怎么来的

How this site was built
01_资源
g00 → PNG / JPG
→
build_assets.py
挑选 · 压缩 · WebP/JPEG
→
assets/img
132 个文件 / 14 MB
→
纯静态 HTML/CSS/JS
无框架 · 无构建依赖
# 本地预览 —— 本包完全自包含(bgm/ 随包附带),任意目录起服务或直接双击 index.html 均可
cd "spnew 所在目录" && python -m http.server 8080
# 打开 http://localhost:8080/  (源项目管线复现方式见交接文档)
02_剧本/out_scene_strings.txt
409,620 条字符串
→
说话人统计 · 线路归属扫描
角色名 / BGM 使用次数 / 日期跨度
→
assets/data.js
台词与统计的唯一事实来源
诚实性说明:本站标注的"线路常用曲""使用次数""场景块数"等均由脚本全量扫描剧本得出,可复现;剧中人名(如"海己/羽未"两种写法并存、"穿和服的少女"等)照提取文本原样呈现。所有台词均为逐字摘录,未做改写。