etaHEN/etaHEN

GitHub: etaHEN/etaHEN

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

Stars: 637 | Forks: 53

# etaHEN - AIO Homebrew 启用器 ![etaHEN](https://github.com/LightningMods/etaHEN/blob/main/etaHEN-Icon.jpg) ## 从源码构建 源码在 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, 客户端加密, 并发处理, 自制软件