etaHEN/etaHEN
GitHub: etaHEN/etaHEN
etaHEN 是一款 PS5 一体化自制程序启用器(HEN payload),通过结合内核漏洞利用实现系统越狱并提供包括调试设置、FTP、插件加载和包安装等在内的完整自制软件运行环境。
Stars: 637 | Forks: 53
# etaHEN - AIO Homebrew 启用器

## 从源码构建
源码在 Source code 文件夹中基于 GPLv3 提供,包含所有必需的文件,以满足 GPLv3 的构建要求。
不过,我不会提供具体的构建说明,因为任何开发者都应该知道如何使用 cmake。
## PS5 官方漏洞网站
- https://tinyurl.com/PS5IPV6 (需要你手动发送 payload,但稳定性最好)
- https://ps5jb.pages.dev/ (自动为你加载 payload,相比 UMTX 我更推荐 IPV6 漏洞)
## 推荐的自托管漏洞
- [为支持 etaHEN 而修改的 IPV6 漏洞](https://github.com/LightningMods/PS5-IPV6-Kernel-Exploit)
## 适用于 Windows 的 Payload PowerShell 脚本使用说明 (send_payload.ps1)
如果你还没有准备好,你需要在管理员权限的 PowerShell 窗口中通过以下命令全局启用脚本执行
```
Set-ExecutionPolicy Bypass
```
或者在替换脚本路径后,运行以下命令来执行该脚本
```
powershell.exe -ExecutionPolicy Bypass -File C:\Path\To\send_payload.ps1
```
**脚本用法**
```
.\send_payload.ps1 -Payload "C:\path\to\example.elf" -IP "192.168.xxx.xxx" -Port XXXX
```
**或**
```
.\send_payload.ps1
cmdlet send_payload.ps1 at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
Payload: C:\path\to\example.elf
IP: 192.168.xxx.xxx
Port: XXXX
```
- 常用端口:SB elfldr 9021,exploit elfldr 9020
## 功能
- ★ etaHEN 工具箱 (调试设置的替代品)
- 自定义 etaHEN [插件](https://github.com/LightningMods/etaHEN-SDK/tree/main/Plugin_samples)
- [工具箱] 在主机上安装 Homebrew Store
- [工具箱] ★休眠模式选项
- [工具箱] Remote Play 菜单
- [工具箱] 带自动启动选项的 Plugin / Payload ELF 菜单
- [工具箱] 外部 HDD 菜单
- [工具箱] TestKit 菜单
- [工具箱] Kstuff 菜单
- [工具箱] 游戏覆盖层菜单
- [工具箱] 作弊菜单 (WIP)
- [工具箱] 控制器快捷键
- [工具箱] PS5 webMAN 游戏菜单
- [工具箱] 自定义游戏选项菜单
- [工具箱] 在主菜单显示 Title ID
- [工具箱] 禁用工具箱自动启动
- [工具箱] Blu-Ray 许可证激活
- [工具箱] 针对 BD-J 和基于 LUA 的漏洞自动弹出光盘
- [工具箱] etaHEN 致谢与支持者
- [工具箱] 自定义调试设置文本和图标
- [工具箱] etaHEN 加载后自动打开菜单
- [工具箱] 多种不同的工具箱设置
- React bundle (适用所有固件) 和 Self (仅限 2.xx) 的 FTP 解密支持
- 采用两个独立的 daemon 以提高稳定性和可靠性
- Util daemon 将由主 etaHEN daemon 自动重启
- 自定义系统软件版本 (自定义系统信息)
- 用于 fself 和 fpkg 支持的 kstuff
- 位于 /data/etaHEN 的 etaHEN 日志
- (可选) 用于打开 itemzflow 的全系统控制器快捷方式
- 调试设置
- 游戏 Dumper (已与 Itemzflow 集成)
- 用于设置的 HEN 配置文件
- Jailbreak IPC 调用 (对 Homebrew 应用进行越狱)
- 更新拦截器 (卸载更新分区)
- *可选* Illusions 作弊/补丁 [插件](https://github.com/LightningMods/etaHEN-SDK/tree/main/Plugin_samples/Illusion_cheats)
- *可选* 端口 1337 上的 FTP 服务器
- *可选* 在应用沙盒内允许访问 /data
- 端口 9081 上的 Klog 服务器
- 端口 9021 上的 elf loader (使用 Johns elfldr)
- *可选* PS5Debug
- Itemzflow 集成
- *可选* 端口 8000 上的 Discord RPC 服务器,点击[此处](https://github.com/jeroendev-one/ps5-rpc-client)查看设置说明
- *可选* Direct PKG installer V2 服务,其 WebUI 位于 http://PS5_IP:12800
- *可选* 端口 9090 上的 Direct PKG installer 服务
## etaHEN SDK
通过 [etaHEN SDK](https://github.com/lightningmods/etaHEN-SDK) 制作你自己的自定义插件
更多信息请[点击这里](https://github.com/LightningMods/etaHEN-SDK/blob/main/README.md)
## 即将推出的功能
- [工具箱] FPS 计数器
- 更多用户态 (userland) 补丁
- 改进的 PS5 游戏支持 (itemzflow)
- 更多功能 (欢迎考虑捐赠)
## etaHEN INI 配置文件
etaHEN 的 ini 设置文件位于 `/data/etaHEN/config.ini`,可以使用内置的 FTP 访问
并且在你第一次运行 etaHEN 时会自动创建它
| INI 键名 | 描述 | 默认值 |
|---------------------|-------------------------------------------------------------|---------------|
| `PS5Debug` | 0 = 禁用 PS5Debug (Sistr0) 自动加载, 1 = 启用 PS5Debug 自动加载 | 0 (禁用) |
| `FTP` | 0 = 禁用 etaHEN 内置 FTP, 1 = 启用它 | 1 (启用) |
| `discord_rpc` | 0 = 禁用 Discord RPC 服务器, 1 = 启用它 | 0 (禁用) |
| `toolbox_auto_start` | 0 = 禁用, 1 = 启用 | 1 (启用) |
| `Allow_data_in_sandbox` | 0 = 禁用应用沙盒中的 /data, 1 = 启用它 | 1 (启用) |
| `DPI` | 0 = 禁用 Direct PKG Installer 服务, 1 = 启用它 | 0 (禁用) |
| `DPI_v2` | 0 = 禁用 DPI 版本 2, 1 = 启用它 | 0 (禁用) |
| `Klog` | 0 = 禁用 kernel 日志记录, 1 = 启用它 | 0 (禁用) |
| `ALLOW_FTP_DEV_ACCESS` | 0 = 禁用 FTP 开发者访问权限, 1 = 启用它 | 0 (禁用) |
| `StartOption` | 0=无, 1=主菜单, 2=设置, 3=工具箱, 4=itemzflow | 0 (无) |
| `Rest_Mode_Delay_Seconds` | 从休眠模式唤醒并修补 shellui 前的延迟秒数 | 0 (无延迟) |
| `Util_rest_kill` | 0 = 休眠期间不杀死 util daemon, 1 = 休眠时杀死它 | 0 (禁用) |
| `Game_rest_kill` | 0 = 休眠期间不杀死打开的游戏, 1 = 休眠时杀死它 | 0 (禁用) |
| `disable_toolbox_auto_start_for_rest_mode` | 0 = 禁用, 1 = 启用 | 0 (禁用) |
| `libhijacker_cheats` | 0 = 禁用 libhijacker 作弊, 1 = 启用它 | 0 (禁用) |
| `launch_itemzflow` | 0 = 禁用, 1 = 启用自动启动 itemzflow | 0 (禁用) |
| `testkit` | 0 = 禁用, 1 = 启用 testkit 模式 | 0 (禁用) |
| `Display_tids` | 0 = 禁用, 1 = 启用显示 Title ID | 0 (禁用) |
| `APP_JB_Debug_Msg` | 0 = 禁用, 1 = 启用应用越狱调试消息 | 0 (禁用) |
| `etaHEN_Game_Options` | 0 = 禁用, 1 = 启用 etaHEN 游戏选项 | 1 (启用) |
| `auto_eject_disc` | 0 = 禁用, 1 = 启用自动弹出光盘 | 0 (禁用) |
| `Cheats_shortcut_opt` | 作弊快捷方式的多选项 | 0 (CHEATS_SC_OFF) |
| `Toolbox_shortcut_opt` | 工具箱快捷方式的多选项 | 0 (TOOLBOX_SC_OFF) |
| `Games_shortcut_opt` | 游戏快捷方式的多选项 | 0 (GAMES_SC_OFF) |
| `Kstuff_shortcut_opt` | kstuff 快捷方式的多选项 | 0 (KSTUFF_SC_OFF) |
| `auto_eject_disc` | 0 = 禁用, 1 = 启用 | 0 (禁用) |
| `overlay_ram` | 0 = 禁用, 1 = 启用 | 0 (禁用) |
| `overlay_cpu` | 0 = 禁用, 1 = 启用 | 0 (禁用) |
| `overlay_gpu` | 0 = 禁用, 1 = 启用 | 0 (禁用) |
| `overlay_ip` | 0 = 禁用, 1 = 启用 | 1 (启用) |
| `overlay_kstuff` | 0 = 禁用, 1 = 启用 | 1 (启用) |
| `Overlay_pos` | 游戏覆盖层的多选项 | 0 (OVERLAY_POS_TOP_LEFT) |
## 供工具开发者使用的 DPI API 详细信息
etaHEN 的 Direct PKG Installer 目前非常简单,被视为 WIP (开发中)
服务流程如下
1. 通过端口 9090 连接到 etaHEN 的 TCP 服务器 (使用 PS5 的 IP)
2. 以以下 json 格式向 etaHEN 发送 URL
```
{ "url" : "http://xxxx" }
```
3. 随后 etaHEN 将发回返回值 (成功则为 0)
```
{ "res" : "0" }
```
4. etaHEN 将在发送返回的 json 后关闭客户端 socket
## 使用 etaHEN 越狱应用 (FPKG) (非白名单方法,需要启用网络和 Legacy CMD 服务器工具箱设置)
```
enum Commands : int {
INVALID_CMD = -1,
ACTIVE_CMD = 0,
LAUNCH_CMD,
PROCLIST_CMD,
KILL_CMD,
KILL_APP_CMD,
JAILBREAK_CMD
};
struct HijackerCommand
{
int magic = 0xDEADBEEF;
Commands cmd = INVALID_CMD;
int PID = -1;
int ret = -1337;
char msg1[0x500];
char msg2[0x500];
};
int HJOpenConnectionforBC() {
SceNetSockaddrIn address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = sceNetHtons(9028); //command serve port
memset(address.sin_zero, 0, sizeof(address.sin_zero));
sceNetInetPton(AF_INET, "127.0.0.1", &address.sin_addr.s_addr);
int socket = sceNetSocket("IPC_CMD_SERVER", AF_INET, SOCK_STREAM, 0);
if (sceNetConnect(socket, (SceNetSockaddr*)&address, sizeof(address)) < 0) {
close(socket), socket = -1;
}
return socket;
}
bool HJJailbreakforBC(int& sock) {
// send jailbreak IPC command
HijackerCommand cmd;
cmd.PID = getpid();
cmd.cmd = JAILBREAK_CMD;
if (send(sock, (void*)&cmd, sizeof(cmd), MSG_NOSIGNAL) == -1) {
puts("failed to send command");
return false;
}
else {
// get ret val from daemon
recv(sock, reinterpret_cast(&cmd), sizeof(cmd), MSG_NOSIGNAL);
close(sock), sock = -1;
if (cmd.ret != 0 && cmd.ret != -1337) {
puts("Jailbreak has failed");
return false;
}
return true;
}
return false;
}
int main()
{
int ret = HJOpenConnectionforBC();
if (ret < 0) {
puts("Failed to connect to daemon");
return -1;
}
if (!HJJailbreakforBC(ret))
{
puts("Jailbreak failed");
return -1;
}
return 0;
}
```
## 测试人员
- [Echo Stretch](https://twitter.com/StretchEcho)
- [idlesauce](https://github.com/idlesauce)
- [Dizz](https://github.com/DizzRL)
- [BedroZen](https://twitter.com/BedroZen)
- [MODDED WARFARE](https://twitter.com/MODDED_WARFARE)
## 加入我们的支持 Discord
- https://discord.gg/xs2F46tKzK
标签:AI合规, Bash脚本, C/C++, Google搜索, Homebrew安装, Payload, PS5越狱, UML, Web报告查看器, 主机破解, 事务性I/O, 客户端加密, 并发处理, 自制软件