thcrap:把内存 patch 做成 JSON 框架
thcrap 是 Touhou Patch Center 社区做的通用 Windows 内存 patch 框架 原作者是 brliron 一票人 我这份从上游 fork 下来 纯粹想扒开看内部怎么跑。它本行给东方那些日文同人游戏做翻译 但底子是个跟具体游戏无关的注入式补丁引擎。
核心靠 DLL 注入 把引擎和插件注进目标进程 还往子进程传播 所以能跟 vpatch 这类同样靠注入的补丁共存。配置全用 JSON 补丁天生开源可读 递归合并 JSON 就实现了叠加 按优先级套一堆 还能用通配符黑名单屏蔽文件 翻译 BGM 图像补丁各自独立又能拼一起。
底层是我 fork 下来主要想研究的几种 hook:
- binary hack:直接往内存塞改 基本手写汇编;
- breakpoint:在任意指令挂 hook 调自己 DLL 里的函数 还能读改当时的 CPU 寄存器;
- 这俩能分组顺序应用 专治 EXE 加壳和 DRM;
- file breakpoint:内存里直接把数据文件换成补丁版本 文件格式的 hook 也照样用 JSON 描述 叠加。
拆开看都是逆向常规操作 被组织成一套“JSON 描述 可叠加”的框架就有意思了。还有个细节:它用一个叫 win32_utf8 的独立库 给用 Win32 ANSI 函数的老程序透明加上 UTF-8 文件名支持 不用再装 AppLocale 这库单独拆出来别的项目也能用。版本识别靠 SHA-256 加 EXE 文件大小 同一游戏不同版本各自对上补丁。
上手就是 git clone --recursive 把子模块全拉下来 VS 里编出来跑一跑 顺着 thcrap_tsa(上海爱丽丝的 STG 引擎)和 thcrap_tasofro(黄昏边境那些)读 hook 怎么写的。整个项目 Public Domain 读着没心理负担。fork 在 github.com/dwgx/thcrap 上游 thpatch/thcrap。