
CFW framework for PS Vita
taiHEN 是一个适用于 PS Vita™ 的 CFW(自定义固件)框架。当通过内核漏洞利用加载后,它会作为修补系统的通用基础平台。taiHEN 提供三项主要功能:
最后一点意味着,开发者可以为内核、系统应用乃至游戏添加自定义补丁。
要构建 taiHEN,你需要带有内核支持的最新版工具链。然后只需使用 CMake 构建即可。
$ mkdir build && cd build
$ cmake ../
$ make
taiHEN 需要借助单独的内核漏洞利用才能运行。一旦漏洞利用程序将 taihen.skprx 加载到内核,其余工作就由 taiHEN 负责。更多信息请参阅该漏洞利用程序的相关文档。
插件会在 taiHEN 加载后载入内核,或在应用程序启动时按需加载。taiHEN 会读取 ux0:tai/config.txt 中的配置文件。
决定要加载哪些插件及其加载顺序的配置位于 ux0:tai/config.txt 中。其格式非常简单,不言自明。
# ignored line starting with #
# Kernel plugins are started with taiHEN and are in this section
*KERNEL
ux0:app/MLCL00001/henkaku.skprx
ux0:path/to/another.skprx
ux0:tai/plugin3.skprx
ux0:data/tai/plugin4.skprx
ux0:data/tai/plugin5.skprx
# titleid for SceSettings
*NPXS10015
ux0:app/MLCL00001/henkaku.suprx
ux0:data/tai/some_settings_plugin.suprx
# titleid for Package Installer
*NPXS10031
ux0:path/to/some_pkg_installer_plgin.suprx
# titleid for SceShell is special (does not follow the XXXXYYYYY format)
*main
ux0:app/MLCL00001/henkaku.skprx
ux0:data/tai/shell_plgin.skprx
需要注意的关键点如下:
# 表示注释的开始,* 表示分区的开始,任何其他字符则表示路径的开始。KERNEL 是一个特殊的分区名称,表示在 taiHEN 启动时加载内核插件。所有其他分区名称都是应用程序/游戏的 Title ID,表示在启动时向其中加载插件。请注意,SceShell 有一个特殊的 Title ID:main。ux0:tai 或 ux0:data/tai 中。同一插件可以出现在多个分区中,但开发者必须确保:如果插件需要执行不同的操作,它需要知道自己被加载到了哪个应用程序中。taiHEN 同时向内核和用户空间导出 API 接口。该接口可在[文档页面](@ref taihen)中找到。你还可以阅读使用指南以了解更详细的信息。你可以下载发布版,也可以自行构建 taiHEN。之后,你可以在项目中包含 taihen.h,并链接 libtaihen_stub.a(用于用户模块)或 libtaihen_kernel_stub.a(用于内核模块)。