etaHEN 2.4B

etaHEN 2.4B Change log

- Updated to support the latest PS5 Payload SDK
- Fixed etaHEN and Cheats support for 8.40-10.01
- Added a Game Overlay menu to show CPU/GPU Temp and utilization, Local IP Address and other future states
- Added a Kstuff menu for options like downloading the latest kstuff from github, turning off kstufff autoload and more
- Added a Custom Background Package Installer for installing PKGs from internal storage from any directory (Requires DPIv2 enabled for 5.50+)
- DPIv2 can now download local files via url example http://192.xxx.xxx.xxx:12800/data/etaHEN/etaHEN.log
- Improved Cheats support, cheats with or without 0 sections are now supported
- Added Fix by TheFlow to Improve 2.xx PS4 PKG speeds
- Replaced the donation links in the etaHEN credits menu with ones to github sponsers
- Removed the non-whitelist app jailbreak option and moved it to an optional Legacy CMD Server option in the etaHEN Settings off by default
- Game Decryptor has been updated for the Itemzflow Dumper
- Updated the Plugin loader System
- The Payload SDK ELFLDR is now REQUIRED for etaHEN to load
- Replaced HTTP2 with Curl for better compatibility
- Added timeout for ShellUI to receive a response (will stop it from freezing if no response is given)
This commit is contained in:
LightningMods committed 2025-12-01 19:53:57 -05:00
1 parent 7967c0a633
commit d47f99bd37
87 files changed
+33769 -3123

No files matched your search

+46 -12
View File
@@ -46,6 +46,8 @@ extern bool is_handler_enabled;
#include <sfo.hpp>
#include <sstream>
extern pthread_t cmd_server;
void* runCommandNControlServer(void*);
// pop -Winfinite-recursion error for this func for clang
#define MB(x) ((size_t)(x) << 20)
@@ -407,7 +409,19 @@ void handleIPC(struct clientArgs *client, std::string &inputStr,
SfoReader sfo(sfo_data);
// VERSION key holds the original version, it doesn't change if updated
game_version = sfo.GetValueFor<std::string>("APP_VER");
try {
std::string version_str = sfo.GetValueFor<std::string>("VERSION");
std::string app_ver_str = sfo.GetValueFor<std::string>("APP_VER");
float version_val = std::stof(version_str);
float app_ver_val = std::stof(app_ver_str);
game_version = (version_val > app_ver_val) ? version_str : app_ver_str;
}
catch (const std::exception& e) {
// Fallback to APP_VER if there's an issue
game_version = sfo.GetValueFor<std::string>("APP_VER");
}
}
etaHEN_log("Version: %s", game_version.c_str());
@@ -518,10 +532,12 @@ void handleIPC(struct clientArgs *client, std::string &inputStr,
break;
}
case BREW_UTIL_LAUNCH_ELFLDR: {
#if 1
if (elfldr_spawn("/", STDOUT_FILENO, elfldr_start, "elfldr.elf") >= 0) {
reply(sender_app, false);
break;
}
#endif
reply(sender_app, true);
break;
}
@@ -531,6 +547,7 @@ void handleIPC(struct clientArgs *client, std::string &inputStr,
reply(sender_app, false);
break;
}
notify(true, "Downloading the latest etaHEN Cheats repo....");
if (!download_file("https://api.github.com/repos/etaHEN/PS5_Cheats/zipball",
"/data/etaHEN/cheats.zip")) {
etaHEN_log("Failed to download cheats");
@@ -551,24 +568,41 @@ void handleIPC(struct clientArgs *client, std::string &inputStr,
break;
}
case BREW_UTIL_DOWNLOAD_KSTUFF: {
notify(true, "Downloading kstuff");
if (!download_file("https://github.com/EchoStretch/kstuff/releases/latest/download/kstuff.elf",
"/data/kstuff.elf")) {
etaHEN_log("Failed to download kstuff");
reply(sender_app, true);
break;
}
notify(true, "Attempting to Download kstuff ...");
if (!download_file("https://github.com/EchoStretch/kstuff/releases/latest/download/kstuff.elf",
"/data/etaHEN/kstuff.elf")) {
unlink("/data/etaHEN/kstuff.elf");
etaHEN_log("Failed to download kstuff");
reply(sender_app, true);
break;
}
notify(true, "Successfully downloaded latest kstuff");
reply(sender_app, false);
break;
}
notify(true, "Successfully downloaded latest kstuff");
reply(sender_app, false);
break;
}
case BREW_UTIL_RELOAD_CHEATS: {
notify(true, "Reloading cheats cache");
ReloadCheatsCache(NULL);
reply(sender_app, false);
break;
}
case BREW_UTIL_TOGGLE_LEGACY_CMD_SERVER: {
bool turn_on = (bool)json_getInteger(json_getProperty(my_json, "toggle"));
etaHEN_log("Legacy Command Server toggle: %d", turn_on);
if (turn_on) {
notify(true, "Legacy Command Server Enabled");
global_conf.legacy_cmd_server = true;
global_conf.legacy_cmd_server_exit = true;
} else {
// dont exit server because its used to detect rest mode too
// just stop handling commands
global_conf.legacy_cmd_server = false;
notify(true, "Legacy Command Server Disabled");
}
reply(sender_app, false);
break;
}
case BREW_KILL_DAEMON:{
is_handler_enabled = false;
exit(1337);