
PS5用ホームブルーイネーブラーペイロード。ポストエクスプロイテーション機能を提供: カスタムプラグイン/ペイロードのロード、未署名のfself/fpkgサポート、デバッグ設定、FTPサーバー、直接パッケージインストーラー。
![]()
このプロジェクトが役に立つと思われた方は、継続的な開発を支援するためにコーヒーを一杯ご馳走していただけると嬉しいです!
ソースコードは、GPLv3 に基づき、ビルドに必要なすべてのファイルとともに Source code フォルダに提供されています。ただし、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 | Description | Default value |
|---|---|---|
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 インストーラーサービスを無効化、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 = タイトル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 インストーラーは現在非常にシンプルで、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()
{