diff --git a/.gitignore b/.gitignore index 62c3c97..4390e8e 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,6 @@ /ios_acp/*.elf /ios_acp/ios_acp_syms.h *.rpx +cmake-build-debug/ +.idea/ +CMakeLists.txt diff --git a/src/main.cpp b/src/main.cpp index 246ab28..29dde17 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,48 +1,60 @@ -#include -#include -#include -#include -#include -#include #include + +#include +#include #include #include -#include +#include +#include #include "utils/logger.h" #include "dynamic.h" #include "kernel.h" -#include "main.h" #include "ios_exploit.h" extern "C" void OSForceFullRelaunch(); +bool CheckRunning() { + switch (ProcUIProcessMessages(true)) { + case PROCUI_STATUS_EXITING: { + return false; + } + case PROCUI_STATUS_RELEASE_FOREGROUND: { + ProcUIDrawDoneRelease(); + break; + } + case PROCUI_STATUS_IN_FOREGROUND: { + break; + } + case PROCUI_STATUS_IN_BACKGROUND: + default: + break; + } + return true; +} + extern "C" uint32_t _start(int argc, char **argv) { doKernelSetup(); InitFunctionPointers(); WHBLogUdpInit(); + DEBUG_FUNCTION_LINE("Hello from fw_img_payload"); - DEBUG_FUNCTION_LINE("Hello from cfw_booter"); - ExecuteIOSExploit(); - OSForceFullRelaunch(); + DEBUG_FUNCTION_LINE("IOSU Exploit done"); + + OSForceFullRelaunch(); SYSLaunchMenu(); - if ( - OSGetTitleID() == 0x000500101004A200L || // mii maker eur - OSGetTitleID() == 0x000500101004A100L || // mii maker usa - OSGetTitleID() == 0x000500101004A000L) { // mii maker jpn - - DEBUG_FUNCTION_LINE("We are in mii maker"); - // return to mii maker. - return ( (int (*)(int, char **))(*(unsigned int*)0x1005E040) )(argc, argv); - } else { - DEBUG_FUNCTION_LINE("We are in another payload"); - uint32_t result = 0; - result |= 4; // Proc UI loop - return result; + ProcUIInit(OSSavesDone_ReadyToRelease); + while (CheckRunning()) { + // wait. + OSSleepTicks(OSMillisecondsToTicks(100)); } + ProcUIShutdown(); + + DEBUG_FUNCTION_LINE("Byebye"); + _Exit(0); return 0; }