thcrap

thcrap

东方Project游戏开源翻译与补丁框架

thcrap是为东方Project游戏设计的开源补丁框架,支持实时内存补丁、多语言翻译和自动更新。框架使用JSON配置,实现补丁堆叠和Unicode文件名支持,并集成Steam功能。它包含主补丁引擎、图形配置界面和更新模块等组件,为玩家提供灵活的游戏修改工具。thcrap易于扩展和定制,适用于各类东方Project游戏补丁开发。

Touhou Project补丁框架DLL注入JSON配置游戏翻译Github开源项目

东方Project社区自动补丁系统

加入 http://discord.thpatch.net 的聊天 Open Collective 上的支持者 构建状态 GitHub 发布

描述

简而言之,这是一个几乎通用的、易于扩展和定制的框架,用于在内存中修补Windows应用程序,专门用于翻译日语游戏。

它主要是为了促进东方Project游戏在东方补丁中心上的自动更新和多语言翻译而开发的,但理论上可以用于这些游戏的任何其他补丁,而无需通过该网站。

基础引擎的主要特点

  • 简单地将主引擎和插件DLL注入到目标进程中。

  • 完全传播到子进程。这允许与其他同样使用DLL注入的第三方补丁一起使用thcrap。(是的,这主要是为了vpatch而开发的。)

  • 使用JSON作为所有补丁配置数据,使补丁本身在设计上开源。通过递归合并JSON对象,这给我们带来了...

  • 补丁堆叠 - 同时应用任意数量的补丁,按优先级列表排序。通过运行配置支持基于通配符的某些补丁中文件的黑名单。

  • 自动为使用Win32 ANSI函数的目标进程添加透明的Unicode文件名支持,无需使用AppLocale等程序。

  • 补丁可以支持单个程序的多个构建和版本,通过SHA-256哈希和.EXE文件大小的组合来识别。

  • 二进制修改用于对原始程序进行任意的内存修改(主要用于自定义汇编)。

  • 断点可在原始代码的任何指令处调用自定义DLL函数。这些函数可以读取和修改当前的CPU寄存器状态。

  • 多组顺序应用的二进制修改和断点,用于绕过EXE打包器和DRM方案。

  • 文件断点用于将内存中的数据文件替换为补丁中的替代文件。

  • 基于通配符的文件格式修补钩子在文件替换时调用 - 可以根据(可堆叠的!)JSON描述对数据文件应用补丁。

  • 可选的Steam集成,适用于通过Steam提供但本身没有Steam集成的游戏。可以通过删除steam_api.dll来禁用。

  • ...所有这些都不会对性能产生显著影响。☺

包含的模块

  • win32_utf8:围绕我们需要的Win32 API调用的UTF-8包装库。这是一个独立项目,也可以(而且应该)在其他应用程序中自由使用。
  • thcrap:主要的补丁引擎。
  • thcrap_loader:一个命令行加载器,用于在新创建的进程上调用thcrap的注入函数。
  • thcrap_configure:用于发现补丁、配置补丁堆栈和定位支持的游戏的GUI向导。
  • thcrap_tsa:一个thcrap插件,包含用于上海爱丽丝幻乐团STG引擎游戏的补丁钩子。
  • thcrap_tasofro:一个thcrap插件,包含用于Twilight Frontier的各种游戏的补丁钩子。
  • thcrap_update:包含补丁的更新功能、thcrap本身的数字签名自动更新,以及更新器GUI。可以安全删除thcrap_update.dll以禁用所有在线功能。
  • thcrap_bgmmod:一个辅助库,用于处理原本未压缩的PCM音乐的非游戏特定BGM修改部分,如编解码器支持和循环点处理。目前静态链接到thcrap_tsa中,因为这个模块目前是唯一支持BGM修改的模块,但已经拆分成一个单独的库,以便将来覆盖更多引擎。

构建

本仓库提供了一个现成的Visual Studio构建配置,涵盖了所有模块及其依赖项。要设置构建:

  • 安装Visual Studio Community 2019

    • 构建thcrap_configure_v3需要Visual Studio 2019或更新版本。对于所有其他组件,Visual Studio Community 2017也可以工作
    • 你也可以使用Visual Studio Community 2022。在安装过程中,确保安装v141和v141_xp工具集(v141_xp是带有Windows XP兼容性的Visual Studio 2017编译器,v141是v141_xp所需的)。
  • 确保你已经与此仓库一起拉取了所有Git子模块:

      git clone --recursive https://github.com/thpatch/thcrap.git
    
  • (可选)如果你的thcrap构建应能自动更新自身,你需要创建一个代码签名证书。为此,在此仓库的根目录(包含thcrap.sln的目录)的Visual Studio命令提示符(vcvarsall.bat)上运行以下命令:

      makecert -n "CN=Your Name,E=yourmail@provider.net" -$ individual -a sha256 -len 4096 -r -cy authority -sky signature -pe -sv cert.pvk cert.cer
      pvk2pfx -pvk cert.pvk -spc cert.cer -pfx cert.pfx
    

    cert.pfx用于在构建过程中签名二进制文件,所以不要更改文件名。

然后,打开thcrap.sln,从工具栏的下拉菜单(或配置管理器)中选择Debug或Release,并从主菜单运行生成 → 生成解决方案。 您也可以通过运行Visual Studio工具环境批处理文件(vcvarsall.bat)从命令行进行构建,然后在thcrap目录中运行

msbuild /m /p:Configuration=Debug

msbuild /m /p:Configuration=Release

二进制文件将会生成在bin/子目录中。

为自动更新签署发布存档

首先,使用OpenSSL将cert.pvk转换为.pem文件,然后将此文件与scripts/release_sign.py一起使用:

openssl rsa -inform pvk -in cert.pvk -outform pem -out cert.pem python release_sign.py -k cert.pem thcrap.zip

使用不同的编译器

推荐使用Visual Studio Community 2017进行构建,构建配置默认引用带有Windows XP支持的Visual Studio 2017平台工具集。但是,通过更改Base.props中的<PlatformToolset>值,该项目通常可以在Visual C++ 2010 Express之后的每个版本下构建。要查看系统上可用的所有平台工具集列表,请打开任何包含项目的属性对话框,参考配置属性 → 常规 → 平台工具集下的下拉菜单。

目前不支持使用MinGW编译。在可预见的将来,这种情况不太可能改变,因为我们认为这没有太大价值。

依赖项

C/C++代码所需的所有第三方库都作为Git子模块包含在thcrap_external_dependencies子模块中,该子模块还包含预构建的DLL、.lib文件、导出定义和PDB。这些包括:

  • Jansson,除win32_utf8外的每个模块都需要。

  • libpng (>= 1.6.0),thcrap_tsa需要用于图像修补。

  • zlib,thcrap_update需要用于CRC32验证。不过libpng无论如何都需要它。

  • thcrap_bgmmod目前通过以下第三方库支持这些编解码器:

scripts目录中的脚本是用Python 3编写的。其中一些需要此存储库中未包含的其他第三方库:

  • release_sign.py需要PyCryptodome
  • repo_update.py需要pathspec。可以通过pip轻松安装。

许可证

除非另有说明,否则Touhou Community Reliant Patcher及所有附带模块均发布到公共领域。这意味着您可以对此代码做任何事情,甚至不需要署名。

话虽如此,我们确实很感谢您的署名。☺

支持者

喜欢我们的工作吗?在Open Collective上成为Touhou Patch Center的支持者,帮助我们决定thcrap未来开发的优先事项。

感谢所有支持者!

<a href="https://opencollective.com/thpatch#backers" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a229b296-0f37-43f2-bf37-72e38c5f6581.svg?width=890&button=true"></a>

团队

<a href="https://github.com/thpatch/thcrap/graphs/contributors"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a83bc983-b6ba-4f17-96de-ae7bf72fd4ea.svg?width=890&limit=5&button=false" /></a>

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多