![]()
如果你觉得这个项目有用,并希望支持它的持续开发,可以考虑请我喝杯咖啡!
源码在 Source code 文件夹中根据 GPLv3 提供,包含按照 GPLv3 要求构建它所需的全部文件。不过,我不会提供构建说明,因为任何开发人员都应该知道如何使用 cmake。
如果你还没有这样做,你需要通过以下命令全局启用脚本执行:
Set-ExecutionPolicy Bypass
在管理员 PowerShell 窗口中执行,或在替换脚本路径后使用此命令运行脚本:
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
通过 etaHEN SDK 制作自己的自定义插件 更多信息请点此
etaHEN 的 ini 设置文件位于 /data/etaHEN/config.ini,可通过内置 FTP 访问,并在你首次运行 etaHEN 时自动创建。
| INI Key | 描述 | 默认值 |
|---|---|---|
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 = 禁用内核日志,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 守护进程,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) |
etaHEN 的 Direct PKG Installer 目前非常简单,还处于 WIP 状态。服务流程如下:
{ "url" : "http://xxxx" }
{ "res" : "0" }
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<void*>(&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;
}