From 791b2944a7a2044f7cfbe479fa6a8705c6059694 Mon Sep 17 00:00:00 2001 From: FIX94 Date: Sat, 12 Nov 2016 22:16:06 +0100 Subject: [PATCH] -fixed screen corruption when loading homebrew launcher by properly clearing the screen -modified IOSU exploit to load from high MEM1 to not run into existing memory and crash -updated homebrew launcher loader to follow dimoks latest commit and be ready for 1.4 .rpx loading --- Makefile | 22 +- cfw_booter/Makefile | 4 +- cfw_booter/arm_kernel/source/main.c | 4 +- cfw_booter/arm_user/source/main.c | 2 +- cfw_booter/main.c | 91 +++-- haxchi_rop.s | 8 +- hbl_loader/Makefile | 4 +- hbl_loader/common.h | 7 +- hbl_loader/kexploit.c | 11 +- hbl_loader/launcher.c | 102 ++---- hbl_loader/os_defs.h | 15 + hbl_loader/sd_loader/src/entry.c | 446 +++++++++++++++++++++--- hbl_loader/sd_loader/src/kernel_defs.h | 75 ++++ hbl_loader/sd_loader/src/kernel_hooks.S | 40 +++ hbl_loader/sd_loader/src/link.ld | 3 +- hbl_loader/sd_loader/src/loader_defs.h | 38 ++ zip/LICENSE | 60 ++++ zip/zip.exe | Bin 0 -> 290816 bytes 18 files changed, 737 insertions(+), 195 deletions(-) create mode 100644 hbl_loader/sd_loader/src/kernel_defs.h create mode 100644 hbl_loader/sd_loader/src/loader_defs.h create mode 100644 zip/LICENSE create mode 100644 zip/zip.exe diff --git a/Makefile b/Makefile index e834aae..cb266ad 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,11 @@ .PHONY := all code550.bin +ifeq ($(Windows_NT), 1) + ZIP = zip/zip.exe +else + ZIP = zip +endif + all: brainage kirby yoshids brainage.zip kirby.zip yoshids.zip brainage_cfw.zip kirby_cfw.zip yoshids_cfw.zip brainage: setup_brainage brainage.nds setup_brainage_cfw brainage_cfw.nds @@ -71,24 +77,24 @@ yoshids_cfw.nds: cp yoshids_cfw.nds wwtouched_cfw.nds brainage.zip: - zip -JXjq9 brainage.zip brainage.nds + $(ZIP) -JXjq9 brainage.zip brainage.nds kirby.zip: - zip -JXjq9 kirby.zip kirby.nds + $(ZIP) -JXjq9 kirby.zip kirby.nds yoshids.zip: - zip -JXjq9 yoshids.zip yoshids.nds - zip -JXjq9 wwtouched.zip wwtouched.nds + $(ZIP) -JXjq9 yoshids.zip yoshids.nds + $(ZIP) -JXjq9 wwtouched.zip wwtouched.nds brainage_cfw.zip: - zip -JXjq9 brainage_cfw.zip brainage_cfw.nds + $(ZIP) -JXjq9 brainage_cfw.zip brainage_cfw.nds kirby_cfw.zip: - zip -JXjq9 kirby_cfw.zip kirby_cfw.nds + $(ZIP) -JXjq9 kirby_cfw.zip kirby_cfw.nds yoshids_cfw.zip: - zip -JXjq9 yoshids_cfw.zip yoshids_cfw.nds - zip -JXjq9 wwtouched_cfw.zip wwtouched_cfw.nds + $(ZIP) -JXjq9 yoshids_cfw.zip yoshids_cfw.nds + $(ZIP) -JXjq9 wwtouched_cfw.zip wwtouched_cfw.nds clean: @rm -f *.bin defines.s brainage.nds brainage.zip kirby.nds kirby.zip wwtouched.nds wwtouched.zip yoshids.nds yoshids.zip diff --git a/cfw_booter/Makefile b/cfw_booter/Makefile index 0e9541d..e1b5d1b 100644 --- a/cfw_booter/Makefile +++ b/cfw_booter/Makefile @@ -2,7 +2,7 @@ PATH := $(DEVKITPPC)/bin:$(PATH) PREFIX ?= powerpc-eabi- CC = $(PREFIX)gcc AS = $(PREFIX)gcc -CFLAGS = -std=gnu99 -O0 -nostdinc -fno-builtin -g +CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin ASFLAGS = -mregnames -x assembler-with-cpp LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy @@ -37,7 +37,7 @@ main: $(CURDIR)/payload/arm_kernel_bin.h cp -r $(root)/*.o $(build) rm $(root)/*.o $(LD) -o code$(FIRMWARE).elf $(build)/crt0.o `find $(build) -name "*.o" ! -name "crt0.o"` $(LDFLAGS) -Map code.map - $(OBJCOPY) code$(FIRMWARE).elf -O binary ../code$(FIRMWARE).bin + $(OBJCOPY) code$(FIRMWARE).elf -S -O binary ../code$(FIRMWARE).bin clean: rm -rf $(build) payload diff --git a/cfw_booter/arm_kernel/source/main.c b/cfw_booter/arm_kernel/source/main.c index 4c675e3..e810c21 100644 --- a/cfw_booter/arm_kernel/source/main.c +++ b/cfw_booter/arm_kernel/source/main.c @@ -70,7 +70,7 @@ int _main() unsigned int control_register = disable_mmu(); /* Save the request handle so we can reply later */ - *(volatile u32*)0x0012F000 = *(volatile u32*)0x1016AD18; + *(volatile u32*)0x01E10000 = *(volatile u32*)0x1016AD18; /* Patch kernel_error_handler to BX LR immediately */ *(int*)0x08129A24 = 0xE12FFF1E; @@ -84,7 +84,7 @@ int _main() void * pusb_root_thread = (void*)0x10100174; kernel_memcpy(pusb_root_thread, (void*)repairData_usb_root_thread, sizeof(repairData_usb_root_thread)); - void * pUserBinSource = (void*)0x00148000; + void * pUserBinSource = (void*)0x01E50000; void * pUserBinDest = (void*)0x101312D0; kernel_memcpy(pUserBinDest, (void*)pUserBinSource, sizeof(arm_user_bin)); diff --git a/cfw_booter/arm_user/source/main.c b/cfw_booter/arm_user/source/main.c index 78cc80d..6f90ca5 100644 --- a/cfw_booter/arm_user/source/main.c +++ b/cfw_booter/arm_user/source/main.c @@ -9,7 +9,7 @@ void _main() int(*reply)(int, int) = (int(*)(int, int))0x1012ED04; - int saved_handle = *(volatile u32*)0x0012F000; + int saved_handle = *(volatile u32*)0x01E10000; int myret = reply(saved_handle, 0); if (myret != 0) ios_shutdown(1); diff --git a/cfw_booter/main.c b/cfw_booter/main.c index 3f62b78..d64a869 100644 --- a/cfw_booter/main.c +++ b/cfw_booter/main.c @@ -4,7 +4,7 @@ #define CHAIN_START 0x1016AD40 #define SHUTDOWN 0x1012EE4C #define SIMPLE_RETURN 0x101014E4 -#define SOURCE (0x120000) +#define SOURCE 0x01E20000 #define IOS_CREATETHREAD 0x1012EABC #define ARM_CODE_BASE 0x08134100 #define REPLACE_SYSCALL 0x081298BC @@ -217,7 +217,7 @@ static const int final_chain[] = { sizeof(arm_kernel_bin), // 0x1FC our code size 0x0, // 0x200 0x10123983, // 0x204 POP {R1,R3,R4,R6,PC} - 0x00140000, // 0x208 our code source location + 0x01E40000, // 0x208 our code source location 0x08131D04, // 0x20C KERNEL_MEMCPY address 0x0, // 0x210 0x0, // 0x214 @@ -233,7 +233,7 @@ static const int second_chain[] = { 0x0, // 0x08 0x0, // 0x0C 0x101063db, // 0x10 POP {R1,R2,R5,PC} - 0x00130000, // 0x14 source + 0x01E30000, // 0x14 source sizeof(final_chain), // 0x18 length 0x0, // 0x1C 0x10106D4C, // 0x20 BL MEMCPY; MOV R0, #0; LDMFD SP!, {R4,R5,PC} @@ -283,22 +283,8 @@ static const int second_chain[] = { static void uhs_exploit_init(unsigned int coreinit_handle); static int uhs_write32(unsigned int coreinit_handle, int dev_uhs_0_handle, int arm_addr, int val); -void __main(void) { - - unsigned int sound_handle = 0; - OSDynLoad_Acquire("sndcore2.rpl", &sound_handle); - if(sound_handle == 0) - { - /* Quit ongoing menu load music */ - OSDynLoad_Acquire("snd_core.rpl", &sound_handle); - void (* AXInit)(); - void (* AXQuit)(); - OSDynLoad_FindExport(sound_handle, 0, "AXInit", &AXInit); - OSDynLoad_FindExport(sound_handle, 0, "AXQuit", &AXQuit); - AXInit(); - AXQuit(); - } - +void __main(void) +{ unsigned int coreinit_handle; OSDynLoad_Acquire("coreinit.rpl", &coreinit_handle); unsigned int sysapp_handle; @@ -337,58 +323,65 @@ void __main(void) { OSExitThread(0); } -static void uhs_exploit_init(unsigned int coreinit_handle) { - void (*DCFlushRange)(const void *addr, uint32_t length); - void (*DCInvalidateRange)(const void *addr, uint32_t length); +static void uhs_exploit_init(unsigned int coreinit_handle) +{ + void (*DCStoreRange)(const void *addr, uint32_t length); void (*memcpy)(void *dst, const void *src, uint32_t length); - OSDynLoad_FindExport(coreinit_handle, 0, "DCFlushRange", &DCFlushRange); - OSDynLoad_FindExport(coreinit_handle, 0, "DCInvalidateRange", &DCInvalidateRange); + void (*memset)(void *dst, const char val, uint32_t length); + OSDynLoad_FindExport(coreinit_handle, 0, "DCStoreRange", &DCStoreRange); OSDynLoad_FindExport(coreinit_handle, 0, "memcpy", &memcpy); + OSDynLoad_FindExport(coreinit_handle, 0, "memset", &memset); + + //! Clear out our used MEM1 area + memset((void*)0xF5E00000, 0, 0x00070000); + DCStoreRange((void*)0xF5E00000, 0x00070000); //!------Variables used in exploit------ - int *pretend_root_hub = (int*)0xF5003ABC; - int *ayylmao = (int*)0xF4F00000; + int *pretend_root_hub = (int*)0xF5E60640; + int *ayylmao = (int*)0xF5E00000; //!------------------------------------- ayylmao[5] = 1; - ayylmao[8] = 0xF00000; + ayylmao[8] = 0x1E00000; - memcpy((char*)(0xF4120000), second_chain, sizeof(second_chain)); - memcpy((char*)(0xF4130000), final_chain, sizeof(final_chain)); - memcpy((char*)(0xF4140000), arm_kernel_bin, sizeof(arm_kernel_bin)); - memcpy((char*)(0xF4148000), arm_user_bin, sizeof(arm_user_bin)); + memcpy((char*)(0xF5E20000), second_chain, sizeof(second_chain)); + memcpy((char*)(0xF5E30000), final_chain, sizeof(final_chain)); + memcpy((char*)(0xF5E40000), arm_kernel_bin, sizeof(arm_kernel_bin)); + memcpy((char*)(0xF5E50000), arm_user_bin, sizeof(arm_user_bin)); - pretend_root_hub[33] = 0xF00000; + pretend_root_hub[33] = 0x1E00000; pretend_root_hub[78] = 0; - DCFlushRange(pretend_root_hub + 33, 200); //! |Make CPU fetch new data (with updated vals) - DCInvalidateRange(pretend_root_hub + 33, 200); //! |for "pretend_root_hub" + //! Store current CPU cache into main memory for IOSU to read + DCStoreRange(ayylmao, 0x840); - DCFlushRange((void*)0xF4120000, sizeof(second_chain)); //! |Make CPU fetch new data (with updated vals) - DCFlushRange((void*)0xF4130000, sizeof(final_chain)); //! |Make CPU fetch new data (with updated vals) - DCFlushRange((void*)0xF4140000, sizeof(arm_kernel_bin)); //! |Make CPU fetch new data (with updated vals) - DCFlushRange((void*)0xF4148000, sizeof(arm_user_bin)); //! |Make CPU fetch new data (with updated vals) + DCStoreRange((void*)0xF5E20000, sizeof(second_chain)); + DCStoreRange((void*)0xF5E30000, sizeof(final_chain)); + DCStoreRange((void*)0xF5E40000, sizeof(arm_kernel_bin)); + DCStoreRange((void*)0xF5E50000, sizeof(arm_user_bin)); + + DCStoreRange(pretend_root_hub, 0x160); } -static int uhs_write32(unsigned int coreinit_handle, int dev_uhs_0_handle, int arm_addr, int val) { - void (*DCFlushRange)(const void *addr, uint32_t length); - void (*DCInvalidateRange)(const void *addr, uint32_t length); +static int uhs_write32(unsigned int coreinit_handle, int dev_uhs_0_handle, int arm_addr, int val) +{ + void (*DCStoreRange)(const void *addr, uint32_t length); void (*OSSleepTicks)(uint64_t ticks); int (*IOS_Ioctl)(int fd, uint32_t request, void *input_buffer,uint32_t input_buffer_len, void *output_buffer, uint32_t output_buffer_len); - OSDynLoad_FindExport(coreinit_handle, 0, "DCFlushRange", &DCFlushRange); - OSDynLoad_FindExport(coreinit_handle, 0, "DCInvalidateRange", &DCInvalidateRange); + OSDynLoad_FindExport(coreinit_handle, 0, "DCStoreRange", &DCStoreRange); OSDynLoad_FindExport(coreinit_handle, 0, "OSSleepTicks", &OSSleepTicks); OSDynLoad_FindExport(coreinit_handle, 0, "IOS_Ioctl", &IOS_Ioctl); //!------Variables used in exploit------ - int *ayylmao = (int*)0xF4F00000; + int *ayylmao = (int*)0xF5E00000; //!------------------------------------- - ayylmao[520] = arm_addr - 24; //! The address to be overwritten, minus 24 bytes - DCFlushRange(ayylmao, 521 * 4); //! |Make CPU fetch new data (with updated adress) - DCInvalidateRange(ayylmao, 521 * 4); //! |for "ayylmao" - OSSleepTicks(0x200000); //! Improves stability - int request_buffer[] = { -(0xBEA2C), val }; //! -(0xBEA2C) gets IOS_USB to read from the middle of MEM1 + ayylmao[520] = arm_addr - 24; //! The address to be overwritten, minus 24 bytes + DCStoreRange(ayylmao, 0x840); //! Store current CPU cache into main memory for IOSU to read + OSSleepTicks(0x200000); //! Wait for caches to refresh over in IOSU + //! index 0 is at 0x10149A6C, each index is 0x144 bytes long, so 0x10149A6C - (0x144*0xB349B) = 0x1E60640, + //! which is the physical address of 0xF5E60640 for us, right at the end of MEM1 + int request_buffer[] = { -(0xB349B), val }; int output_buffer[32]; return IOS_Ioctl(dev_uhs_0_handle, 0x15, request_buffer, sizeof(request_buffer), output_buffer, sizeof(output_buffer)); } diff --git a/haxchi_rop.s b/haxchi_rop.s index 744757a..58d8edc 100644 --- a/haxchi_rop.s +++ b/haxchi_rop.s @@ -118,8 +118,10 @@ rop_hook_start: .arm.big rop_start: - ; quit out of GX2 so we can re-use it in core 0 + ; do hachihachi cleanups so we can use everything safely + call_func HACHI_APPLICATION_SHUTDOWNANDDESTROY, HACHI_APPLICATION_PTR, 0, 0, 0 call_func NERD_FASTWIIU_SHUTDOWN, 0, 0, 0, 0 + call_func CORE_SHUTDOWN, 0, 0, 0, 0 ; set up hbl_loader in core 0 call_func_6args NERD_CREATETHREAD, NERD_THREAD0OBJECT, LWZ_R0xAFC_MTLR_R0_ADDI_R1xAF8_BLR, 0x1007E7A8, thread0_param, 0x0, 0x0 @@ -198,10 +200,6 @@ rop_start: call_func NERD_STARTTHREAD, NERD_THREAD0OBJECT, 0x0, 0x0, 0x0 call_func NERD_JOINTHREAD, NERD_THREAD0OBJECT, 0x0, 0x0, 0x0 - ; clean up the rest of hachihachi - call_func HACHI_APPLICATION_SHUTDOWNANDDESTROY, HACHI_APPLICATION_PTR, 0, 0, 0 - call_func CORE_SHUTDOWN, 0, 0, 0, 0 - ; prepare system for foreground release call_func OSSAVESDONE_READYTORELEASE, 0, 0, 0, 0 diff --git a/hbl_loader/Makefile b/hbl_loader/Makefile index 9e3d839..fd7092b 100644 --- a/hbl_loader/Makefile +++ b/hbl_loader/Makefile @@ -2,7 +2,7 @@ PATH := $(DEVKITPPC)/bin:$(PATH) PREFIX ?= powerpc-eabi- CC = $(PREFIX)gcc AS = $(PREFIX)gcc -CFLAGS = -std=gnu99 -O0 -nostdinc -fno-builtin -g +CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin ASFLAGS = -mregnames -x assembler-with-cpp LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy @@ -37,7 +37,7 @@ main: sd_loader.h cp -r $(root)/*.o $(build) rm $(root)/*.o $(LD) -o code$(FIRMWARE).elf $(build)/crt0.o `find $(build) -name "*.o" ! -name "crt0.o"` $(LDFLAGS) -Map code.map - $(OBJCOPY) code$(FIRMWARE).elf -O binary ../code$(FIRMWARE).bin + $(OBJCOPY) code$(FIRMWARE).elf -S -O binary ../code$(FIRMWARE).bin clean: rm -rf $(build) diff --git a/hbl_loader/common.h b/hbl_loader/common.h index 3f2aafa..71beaae 100644 --- a/hbl_loader/common.h +++ b/hbl_loader/common.h @@ -7,7 +7,7 @@ extern "C" { #include "os_defs.h" -#define HBL_VERSION "v1.3" +#define HBL_VERSION "v1.4" #define CAFE_OS_SD_PATH "/vol/external01" #define SD_PATH "sd:" @@ -19,11 +19,16 @@ extern "C" { #define ELF_DATA_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x00)) #define ELF_DATA_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x04)) +#define HBL_CHANNEL (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x08)) +#define RPX_MAX_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x0C)) +#define RPX_MAX_CODE_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x10)) #define MAIN_ENTRY_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x00)) #define OS_FIRMWARE (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x04)) #define OS_SPECIFICS ((OsSpecifics*)(MEM_BASE + 0x1500)) +#define MEM_AREA_TABLE ((s_mem_area*)(MEM_BASE + 0x1600)) + #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif diff --git a/hbl_loader/kexploit.c b/hbl_loader/kexploit.c index da3ad8d..5fa4419 100644 --- a/hbl_loader/kexploit.c +++ b/hbl_loader/kexploit.c @@ -18,22 +18,13 @@ void run_kexploit(private_data_t *private_data) /* Exit functions */ void (*__PPCExit)(); - void (*_Exit)(int); - OSDynLoad_FindExport(coreinit_handle, 0, "__PPCExit", &__PPCExit); - OSDynLoad_FindExport(coreinit_handle, 0, "_Exit", &_Exit); - + /* Memory functions */ void (*DCFlushRange)(void *buffer, uint32_t length); - void (*DCInvalidateRange)(void *buffer, uint32_t length); - void (*DCTouchRange)(void *buffer, uint32_t length); - uint32_t (*OSEffectiveToPhysical)(void *vaddr); void* (*OSAllocFromSystem)(uint32_t size, int align); void (*OSFreeToSystem)(void *ptr); OSDynLoad_FindExport(coreinit_handle, 0, "DCFlushRange", &DCFlushRange); - OSDynLoad_FindExport(coreinit_handle, 0, "DCInvalidateRange", &DCInvalidateRange); - OSDynLoad_FindExport(coreinit_handle, 0, "DCTouchRange", &DCTouchRange); - OSDynLoad_FindExport(coreinit_handle, 0, "OSEffectiveToPhysical", &OSEffectiveToPhysical); OSDynLoad_FindExport(coreinit_handle, 0, "OSAllocFromSystem", &OSAllocFromSystem); OSDynLoad_FindExport(coreinit_handle, 0, "OSFreeToSystem", &OSFreeToSystem); diff --git a/hbl_loader/launcher.c b/hbl_loader/launcher.c index 1a79277..b20d5d8 100644 --- a/hbl_loader/launcher.c +++ b/hbl_loader/launcher.c @@ -23,9 +23,17 @@ #define ROOTRPX_DBAT0L_VAL 0x30000012 #define COREINIT_DBAT0L_VAL 0x32000012 +#define address_LiWaitIopComplete 0x01010180 +#define address_LiWaitIopCompleteWithInterrupts 0x0101006C +#define address_LiWaitOneChunk 0x0100080C +#define address_PrepareTitle_hook 0xFFF184E4 +#define address_sgIsLoadingBuffer 0xEFE19E80 +#define address_gDynloadInitialized 0xEFE13DBC + /* Install functions */ static void InstallMain(private_data_t *private_data); static void InstallPatches(private_data_t *private_data); +static void PrepareScreen(private_data_t *private_data); static void ExitFailure(private_data_t *private_data, const char *failure); static void SetupKernelSyscall(unsigned int addr); @@ -41,20 +49,6 @@ extern void KernelPatches(void); /* ****************************************************************** */ void __main(void) { - unsigned int sound_handle = 0; - OSDynLoad_Acquire("sndcore2.rpl", &sound_handle); - if(sound_handle == 0) - { - /* Quit ongoing menu load music */ - OSDynLoad_Acquire("snd_core.rpl", &sound_handle); - void (* AXInit)(); - void (* AXQuit)(); - OSDynLoad_FindExport(sound_handle, 0, "AXInit", &AXInit); - OSDynLoad_FindExport(sound_handle, 0, "AXQuit", &AXQuit); - AXInit(); - AXQuit(); - } - /* Get coreinit handle and keep it in memory */ unsigned int coreinit_handle; OSDynLoad_Acquire("coreinit.rpl", &coreinit_handle); @@ -86,56 +80,16 @@ void __main(void) if (private_data.OSEffectiveToPhysical((void *)0xa0000000) == (void *)0) run_kexploit(&private_data); - /* Prepare for _SYSLaunchMiiStudio thread */ - int (*OSCreateThread)(void *thread, void *entry, int argc, void *args, unsigned int stack, unsigned int stack_size, int priority, unsigned short attr); - int (*OSResumeThread)(void *thread); - int (*OSIsThreadTerminated)(void *thread); + /* Since we inited GX2 without initing the screen before do that now */ + /* Without this the hbl load will have some screen corruptions */ + PrepareScreen(&private_data); - OSDynLoad_FindExport(coreinit_handle, 0, "OSCreateThread", &OSCreateThread); - OSDynLoad_FindExport(coreinit_handle, 0, "OSResumeThread", &OSResumeThread); - OSDynLoad_FindExport(coreinit_handle, 0, "OSIsThreadTerminated", &OSIsThreadTerminated); - - /* Allocate a stack for the thread */ - void *stack = private_data.MEMAllocFromDefaultHeapEx(0x1000, 0x20); - /* Create the thread variable */ - void *thread = private_data.MEMAllocFromDefaultHeapEx(0x1000, 8); - if(!thread || !stack) - ExitFailure(&private_data, "Thread memory allocation failed. Exit and re-enter browser."); - - /* Quickly find _SYSLaunchMiiStudio */ + /* Do SYSLaunchMiiStudio to boot HBL */ unsigned int sysapp_handle; - void (*_SYSLaunchMiiStudio)(void) = 0; + void (*SYSLaunchMiiStudio)(void) = 0; OSDynLoad_Acquire("sysapp.rpl", &sysapp_handle); - OSDynLoad_FindExport(sysapp_handle, 0, "_SYSLaunchMiiStudio", &_SYSLaunchMiiStudio); - if(_SYSLaunchMiiStudio == (void*)0) - OSFatal("_SYSLaunchMiiStudio is not there?"); - - /* Do _SYSLaunchMiiStudio in core 1 */ - int ret = OSCreateThread(thread, _SYSLaunchMiiStudio, 0, (void*)0, (unsigned int)stack+0x1000, 0x1000, 0, 0x1A); - if (ret == 0) - ExitFailure(&private_data, "Failed to create thread. Exit and re-enter browser."); - - /* Schedule it for execution */ - OSResumeThread(thread); - - /* Can not use OSJoinThread, which hangs for some reason, so we use a detached one and wait for it to terminate */ - while(OSIsThreadTerminated(thread) == 0) - { - asm volatile ( - " nop\n" - " nop\n" - " nop\n" - " nop\n" - " nop\n" - " nop\n" - " nop\n" - " nop\n" - ); - } - - /* Free thread memory and stack */ - private_data.MEMFreeToDefaultHeap(thread); - private_data.MEMFreeToDefaultHeap(stack); + OSDynLoad_FindExport(sysapp_handle, 0, "SYSLaunchMiiStudio", &SYSLaunchMiiStudio); + SYSLaunchMiiStudio(); /* setup kernel copy data syscall */ kern_write((void*)(KERN_SYSCALL_TBL_2 + (0x25 * 4)), (unsigned int)KernelCopyData); @@ -156,23 +110,20 @@ void __main(void) OSExitThread(0); } -void ExitFailure(private_data_t *private_data, const char *failure) +void PrepareScreen(private_data_t *private_data) { - /************************************************************************/ // Prepare screen void (*OSScreenInit)(); unsigned int (*OSScreenGetBufferSizeEx)(unsigned int bufferNum); unsigned int (*OSScreenSetBufferEx)(unsigned int bufferNum, void * addr); unsigned int (*OSScreenClearBufferEx)(unsigned int bufferNum, unsigned int temp); unsigned int (*OSScreenFlipBuffersEx)(unsigned int bufferNum); - unsigned int (*OSScreenPutFontEx)(unsigned int bufferNum, unsigned int posX, unsigned int posY, const char * buffer); OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenInit", &OSScreenInit); OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenGetBufferSizeEx", &OSScreenGetBufferSizeEx); OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenSetBufferEx", &OSScreenSetBufferEx); OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenClearBufferEx", &OSScreenClearBufferEx); OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenFlipBuffersEx", &OSScreenFlipBuffersEx); - OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenPutFontEx", &OSScreenPutFontEx); // Prepare screen int screen_buf0_size = 0; @@ -197,6 +148,18 @@ void ExitFailure(private_data_t *private_data, const char *failure) // Flip buffers OSScreenFlipBuffersEx(0); OSScreenFlipBuffersEx(1); +} + +void ExitFailure(private_data_t *private_data, const char *failure) +{ + /************************************************************************/ + unsigned int (*OSScreenClearBufferEx)(unsigned int bufferNum, unsigned int temp); + unsigned int (*OSScreenFlipBuffersEx)(unsigned int bufferNum); + unsigned int (*OSScreenPutFontEx)(unsigned int bufferNum, unsigned int posX, unsigned int posY, const char * buffer); + + OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenClearBufferEx", &OSScreenClearBufferEx); + OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenFlipBuffersEx", &OSScreenFlipBuffersEx); + OSDynLoad_FindExport(private_data->coreinit_handle, 0, "OSScreenPutFontEx", &OSScreenPutFontEx); OSScreenPutFontEx(1, 0, 0, failure); @@ -404,6 +367,15 @@ static void InstallPatches(private_data_t *private_data) osSpecificFunctions.addr_KernSyscallTbl3 = KERN_SYSCALL_TBL_3; osSpecificFunctions.addr_KernSyscallTbl4 = KERN_SYSCALL_TBL_4; osSpecificFunctions.addr_KernSyscallTbl5 = KERN_SYSCALL_TBL_5; + + osSpecificFunctions.LiWaitIopComplete = (int (*)(int, int *)) address_LiWaitIopComplete; + osSpecificFunctions.LiWaitIopCompleteWithInterrupts = (int (*)(int, int *)) address_LiWaitIopCompleteWithInterrupts; + osSpecificFunctions.addr_LiWaitOneChunk = address_LiWaitOneChunk; + osSpecificFunctions.addr_PrepareTitle_hook = address_PrepareTitle_hook; + osSpecificFunctions.addr_sgIsLoadingBuffer = address_sgIsLoadingBuffer; + osSpecificFunctions.addr_gDynloadInitialized = address_gDynloadInitialized; + osSpecificFunctions.orig_LiWaitOneChunkInstr = *(unsigned int*)address_LiWaitOneChunk; + //! pointer to main entry point of a title osSpecificFunctions.addr_OSTitle_main_entry = ADDRESS_OSTitle_main_entry_ptr; diff --git a/hbl_loader/os_defs.h b/hbl_loader/os_defs.h index 48a4c8f..b92c527 100644 --- a/hbl_loader/os_defs.h +++ b/hbl_loader/os_defs.h @@ -16,8 +16,23 @@ typedef struct _OsSpecifics unsigned int addr_KernSyscallTbl3; unsigned int addr_KernSyscallTbl4; unsigned int addr_KernSyscallTbl5; + + int (*LiWaitIopComplete)(int, int *); + int (*LiWaitIopCompleteWithInterrupts)(int, int *); + unsigned int addr_LiWaitOneChunk; + unsigned int addr_PrepareTitle_hook; + unsigned int addr_sgIsLoadingBuffer; + unsigned int addr_gDynloadInitialized; + unsigned int orig_LiWaitOneChunkInstr; } OsSpecifics; +typedef struct _s_mem_area +{ + unsigned int address; + unsigned int size; + struct _s_mem_area* next; +} s_mem_area; + #ifdef __cplusplus } #endif diff --git a/hbl_loader/sd_loader/src/entry.c b/hbl_loader/sd_loader/src/entry.c index 5e9f018..5d7db8f 100644 --- a/hbl_loader/sd_loader/src/entry.c +++ b/hbl_loader/sd_loader/src/entry.c @@ -3,13 +3,11 @@ #include "../../common.h" #include "../../fs_defs.h" #include "../../os_defs.h" - -#define CODE_RW_BASE_OFFSET 0 -#define DATA_RW_BASE_OFFSET 0 +#include "kernel_defs.h" +#include "loader_defs.h" #define EXPORT_DECL(res, func, ...) res (* func)(__VA_ARGS__); - -#define OS_FIND_EXPORT(handle, funcName, func) OSDynLoad_FindExport(handle, 0, funcName, &func) +#define OS_FIND_EXPORT(handle, funcName, func) OSDynLoad_FindExport(handle, 0, funcName, &func) typedef struct _private_data_t { @@ -19,10 +17,8 @@ typedef struct _private_data_t EXPORT_DECL(void*, memcpy, void *p1, const void *p2, unsigned int s); EXPORT_DECL(void*, memset, void *p1, int val, unsigned int s); EXPORT_DECL(void, OSFatal, const char* msg); - EXPORT_DECL(void, DCFlushRange, const void *addr, u32 length); - EXPORT_DECL(void, ICInvalidateRange, const void *addr, u32 length); - EXPORT_DECL(int, __os_snprintf, char* s, int n, const char * format, ...); - EXPORT_DECL(void, exit, void); + EXPORT_DECL(unsigned int, OSEffectiveToPhysical, const void*); + EXPORT_DECL(void, exit, int); EXPORT_DECL(int, FSInit, void); EXPORT_DECL(int, FSAddClientEx, void *pClient, int unk_zero_param, int errHandling); @@ -39,6 +35,333 @@ typedef struct _private_data_t EXPORT_DECL(int, SYSRelaunchTitle, int argc, char** argv); } private_data_t; +static void (*DCFlushRange)(void *addr, unsigned int size); +static void (*DCInvalidateRange)(void *addr, unsigned int size); +static void (*ICInvalidateRange)(void *addr, unsigned int size); +static unsigned int hook_LiWaitOneChunk; +static unsigned int addrphys_LiWaitOneChunk; + +extern void SC0x25_KernelCopyData(unsigned int addr, unsigned int src, unsigned int len); +extern void my_PrepareTitle_hook(void); + +/* Write a 32-bit word with kernel permissions */ +static void __attribute__ ((noinline)) kern_write(void *addr, uint32_t value) +{ + asm volatile ( + "li 3,1\n" + "li 4,0\n" + "mr 5,%1\n" + "li 6,0\n" + "li 7,0\n" + "lis 8,1\n" + "mr 9,%0\n" + "mr %1,1\n" + "li 0,0x3500\n" + "sc\n" + "nop\n" + "mr 1,%1\n" + : + : "r"(addr), "r"(value) + : "memory", "ctr", "lr", "0", "3", "4", "5", "6", "7", "8", "9", "10", + "11", "12" + ); +} + +static void KernelCopyData(unsigned int addr, unsigned int src, unsigned int len) +{ + /* + * Setup a DBAT access with cache inhibited to write through and read directly from memory + */ + unsigned int dbatu0, dbatl0, dbatu1, dbatl1; + // save the original DBAT value + asm volatile("mfdbatu %0, 0" : "=r" (dbatu0)); + asm volatile("mfdbatl %0, 0" : "=r" (dbatl0)); + asm volatile("mfdbatu %0, 1" : "=r" (dbatu1)); + asm volatile("mfdbatl %0, 1" : "=r" (dbatl1)); + + unsigned int target_dbatu0 = 0; + unsigned int target_dbatl0 = 0; + unsigned int target_dbatu1 = 0; + unsigned int target_dbatl1 = 0; + + unsigned int *dst_p = (unsigned int*)addr; + unsigned int *src_p = (unsigned int*)src; + + // we only need DBAT modification for addresses out of our own DBAT range + // as our own DBAT is available everywhere for user and supervisor + // since our own DBAT is on DBAT5 position we don't collide here + if(addr < 0x00800000 || addr >= 0x01000000) + { + target_dbatu0 = (addr & 0x00F00000) | 0xC0000000 | 0x1F; + target_dbatl0 = (addr & 0xFFF00000) | 0x32; + asm volatile("mtdbatu 0, %0" : : "r" (target_dbatu0)); + asm volatile("mtdbatl 0, %0" : : "r" (target_dbatl0)); + dst_p = (unsigned int*)((addr & 0xFFFFFF) | 0xC0000000); + } + if(src < 0x00800000 || src >= 0x01000000) + { + target_dbatu1 = (src & 0x00F00000) | 0xB0000000 | 0x1F; + target_dbatl1 = (src & 0xFFF00000) | 0x32; + + asm volatile("mtdbatu 1, %0" : : "r" (target_dbatu1)); + asm volatile("mtdbatl 1, %0" : : "r" (target_dbatl1)); + src_p = (unsigned int*)((src & 0xFFFFFF) | 0xB0000000); + } + + asm volatile("eieio; isync"); + + unsigned int i; + for(i = 0; i < len; i += 4) + { + // if we are on the edge to next chunk + if((target_dbatu0 != 0) && (((unsigned int)dst_p & 0x00F00000) != (target_dbatu0 & 0x00F00000))) + { + target_dbatu0 = ((addr + i) & 0x00F00000) | 0xC0000000 | 0x1F; + target_dbatl0 = ((addr + i) & 0xFFF00000) | 0x32; + dst_p = (unsigned int*)(((addr + i) & 0xFFFFFF) | 0xC0000000); + + asm volatile("eieio; isync"); + asm volatile("mtdbatu 0, %0" : : "r" (target_dbatu0)); + asm volatile("mtdbatl 0, %0" : : "r" (target_dbatl0)); + asm volatile("eieio; isync"); + } + if((target_dbatu1 != 0) && (((unsigned int)src_p & 0x00F00000) != (target_dbatu1 & 0x00F00000))) + { + target_dbatu1 = ((src + i) & 0x00F00000) | 0xB0000000 | 0x1F; + target_dbatl1 = ((src + i) & 0xFFF00000) | 0x32; + src_p = (unsigned int*)(((src + i) & 0xFFFFFF) | 0xB0000000); + + asm volatile("eieio; isync"); + asm volatile("mtdbatu 1, %0" : : "r" (target_dbatu1)); + asm volatile("mtdbatl 1, %0" : : "r" (target_dbatl1)); + asm volatile("eieio; isync"); + } + + *dst_p = *src_p; + + ++dst_p; + ++src_p; + } + + /* + * Restore original DBAT value + */ + asm volatile("eieio; isync"); + asm volatile("mtdbatu 0, %0" : : "r" (dbatu0)); + asm volatile("mtdbatl 0, %0" : : "r" (dbatl0)); + asm volatile("mtdbatu 1, %0" : : "r" (dbatu1)); + asm volatile("mtdbatl 1, %0" : : "r" (dbatl1)); + asm volatile("eieio; isync"); +} + +// This function is called every time after LiBounceOneChunk. +// It waits for the asynchronous call of LiLoadAsync for the IOSU to fill data to the RPX/RPL address +// and return the still remaining bytes to load. +// We override it and replace the loaded date from LiLoadAsync with our data and our remaining bytes to load. +static int LiWaitOneChunk(unsigned int * iRemainingBytes, const char *filename, int fileType) +{ + unsigned int result; + register int core_id; + int remaining_bytes = 0; + + int sgFileOffset; + int sgBufferNumber; + int *sgBounceError; + int *sgGotBytes; + int *sgTotalBytes; + int *sgIsLoadingBuffer; + int *sgFinishedLoadingBuffer; + + // get the current core + asm volatile("mfspr %0, 0x3EF" : "=r" (core_id)); + + // get the offset of per core global variable for dynload initialized (just a simple address + (core_id * 4)) + unsigned int gDynloadInitialized = *(volatile unsigned int*)(OS_SPECIFICS->addr_gDynloadInitialized + (core_id << 2)); + + // Comment (Dimok): + // time measurement at this position for logger -> we don't need it right now except maybe for debugging + //unsigned long long systemTime1 = Loader_GetSystemTime(); + + if(OS_FIRMWARE == 550) + { + // pointer to global variables of the loader + loader_globals_550_t *loader_globals = (loader_globals_550_t*)(0xEFE19E80); + + sgBufferNumber = loader_globals->sgBufferNumber; + sgFileOffset = loader_globals->sgFileOffset; + sgBounceError = &loader_globals->sgBounceError; + sgGotBytes = &loader_globals->sgGotBytes; + sgTotalBytes = &loader_globals->sgTotalBytes; + sgFinishedLoadingBuffer = &loader_globals->sgFinishedLoadingBuffer; + // not available on 5.5.x + sgIsLoadingBuffer = NULL; + } + else + { + // pointer to global variables of the loader + loader_globals_t *loader_globals = (loader_globals_t*)(OS_SPECIFICS->addr_sgIsLoadingBuffer); + + sgBufferNumber = loader_globals->sgBufferNumber; + sgFileOffset = loader_globals->sgFileOffset; + sgBounceError = &loader_globals->sgBounceError; + sgGotBytes = &loader_globals->sgGotBytes; + sgIsLoadingBuffer = &loader_globals->sgIsLoadingBuffer; + // not available on < 5.5.x + sgTotalBytes = NULL; + sgFinishedLoadingBuffer = NULL; + } + + // the data loading was started in LiBounceOneChunk() and here it waits for IOSU to finish copy the data + if(gDynloadInitialized != 0) { + result = OS_SPECIFICS->LiWaitIopCompleteWithInterrupts(0x2160EC0, &remaining_bytes); + + } + else { + result = OS_SPECIFICS->LiWaitIopComplete(0x2160EC0, &remaining_bytes); + } + + // Comment (Dimok): + // time measurement at this position for logger -> we don't need it right now except maybe for debugging + //unsigned long long systemTime2 = Loader_GetSystemTime(); + + //------------------------------------------------------------------------------------------------------------------ + // Start of our function intrusion: + // After IOSU is done writing the data into the 0xF6000000/0xF6400000 address, + // we overwrite it with our data before setting the global flag for IsLoadingBuffer to 0 + // Do this only if we are in the game that was launched by our method + s_mem_area *mem_area = MEM_AREA_TABLE; + if((ELF_DATA_ADDR == mem_area->address) && (fileType == 0)) + { + unsigned int load_address = (sgBufferNumber == 1) ? 0xF6000000 : (0xF6000000 + 0x00400000); + unsigned int load_addressPhys = (sgBufferNumber == 1) ? 0x1B000000 : (0x1B000000 + 0x00400000); // virtual 0xF6000000 and 0xF6400000 + + remaining_bytes = ELF_DATA_SIZE - sgFileOffset; + if (remaining_bytes > 0x400000) + // truncate size + remaining_bytes = 0x400000; + + DCFlushRange((void*)load_address, remaining_bytes); + + u32 rpxBlockPos = 0; + u32 done = 0; + u32 mapOffset = 0; + + while((done < (u32)sgFileOffset) && mem_area) + { + if((done + mem_area->size) > (u32)sgFileOffset) + { + mapOffset = sgFileOffset - done; + done = sgFileOffset; + } + else + { + done += mem_area->size; + mem_area = mem_area->next; + } + } + + while((done < ELF_DATA_SIZE) && (rpxBlockPos < 0x400000) && mem_area) + { + u32 address = mem_area->address + mapOffset; + u32 blockSize = ELF_DATA_SIZE - done; + + if(blockSize > (0x400000 - rpxBlockPos)) + { + blockSize = 0x400000 - rpxBlockPos; + } + if((mapOffset + blockSize) >= mem_area->size) + { + blockSize = mem_area->size - mapOffset; + mem_area = mem_area->next; + mapOffset = 0; + } + + SC0x25_KernelCopyData(load_addressPhys + rpxBlockPos, address, blockSize); + done += blockSize; + rpxBlockPos += blockSize; + mapOffset += blockSize; + } + + DCInvalidateRange((void*)load_address, remaining_bytes); + + if((u32)(sgFileOffset + remaining_bytes) == ELF_DATA_SIZE) + { + ELF_DATA_ADDR = 0xDEADC0DE; + ELF_DATA_SIZE = 0; + MAIN_ENTRY_ADDR = 0xC001C0DE; + } + // set result to 0 -> "everything OK" + result = 0; + } + + // end of our little intrusion into this function + //------------------------------------------------------------------------------------------------------------------ + + // set the result to the global bounce error variable + if(sgBounceError) { + *sgBounceError = result; + } + + // disable global flag that buffer is still loaded by IOSU + if(sgFinishedLoadingBuffer) + { + unsigned int zeroBitCount = 0; + asm volatile("cntlzw %0, %0" : "=r" (zeroBitCount) : "r"(*sgFinishedLoadingBuffer)); + *sgFinishedLoadingBuffer = zeroBitCount >> 5; + } + else if(sgIsLoadingBuffer) + { + *sgIsLoadingBuffer = 0; + } + + // check result for errors + if(result == 0) + { + // the remaining size is set globally and in stack variable only + // if a pointer was passed to this function + if(iRemainingBytes) { + if(sgGotBytes) { + *sgGotBytes = remaining_bytes; + } + + *iRemainingBytes = remaining_bytes; + + // on 5.5.x a new variable for total loaded bytes was added + if(sgTotalBytes) { + *sgTotalBytes += remaining_bytes; + } + } + // Comment (Dimok): + // calculate time difference and print it on logging how long the wait for asynchronous data load took + // something like (systemTime2 - systemTime1) * constant / bus speed, did not look deeper into it as we don't need that crap + } + else { + // Comment (Dimok): + // a lot of error handling here. depending on error code sometimes calls Loader_Panic() -> we don't make errors so we can skip that part ;-P + } + return result; +} + +void my_PrepareTitle(CosAppXmlInfo *xmlKernelInfo) +{ + if(ELF_DATA_ADDR == MEM_AREA_TABLE->address) + { + xmlKernelInfo->max_size = RPX_MAX_SIZE; + xmlKernelInfo->max_codesize = RPX_MAX_CODE_SIZE; + //! setup our hook to LiWaitOneChunk for RPX loading + hook_LiWaitOneChunk = ((u32)LiWaitOneChunk) | 0x48000002; + KernelCopyData(addrphys_LiWaitOneChunk, (u32) &hook_LiWaitOneChunk, 4); + asm volatile("icbi 0, %0" : : "r" (OS_SPECIFICS->addr_LiWaitOneChunk & ~31)); + } + else if((MAIN_ENTRY_ADDR == 0xC001C0DE) && (*(u32*)xmlKernelInfo->rpx_name == 0x66666c5f)) // ffl_ + { + //! restore original LiWaitOneChunk instruction as our RPX is done + MAIN_ENTRY_ADDR = 0xDEADC0DE; + KernelCopyData(addrphys_LiWaitOneChunk, (u32)&OS_SPECIFICS->orig_LiWaitOneChunkInstr, 4); + asm volatile("icbi 0, %0" : : "r" (OS_SPECIFICS->addr_LiWaitOneChunk & ~31)); + } +} + static int LoadFileToMem(private_data_t *private_data, const char *filepath, unsigned char **fileOut, unsigned int * sizeOut) { int iFd = -1; @@ -66,19 +389,15 @@ static int LoadFileToMem(private_data_t *private_data, const char *filepath, uns int status = private_data->FSGetMountSource(pClient, pCmd, 0, tempPath, -1); if (status != 0) { private_data->OSFatal("FSGetMountSource failed."); - break; } status = private_data->FSMount(pClient, pCmd, tempPath, mountPath, FS_MAX_MOUNTPATH_SIZE, -1); if(status != 0) { private_data->OSFatal("SD mount failed."); - break; } status = private_data->FSOpenFile(pClient, pCmd, filepath, "r", &iFd, -1); - if(status != 0) - { - private_data->FSUnmount(pClient, pCmd, mountPath, -1); - break; + if(status != 0) { + private_data->OSFatal("FSOpenFile failed."); } FSStat stat; @@ -90,9 +409,8 @@ static int LoadFileToMem(private_data_t *private_data, const char *filepath, uns if(stat.size > 0) pBuffer = private_data->MEMAllocFromDefaultHeapEx((stat.size + 0x3F) & ~0x3F, 0x40); - - if(!pBuffer) - private_data->OSFatal("Not enough memory for ELF file."); + else + private_data->OSFatal("ELF file empty."); unsigned int done = 0; @@ -150,25 +468,19 @@ static unsigned int load_elf_image (private_data_t *private_data, unsigned char continue; if(phdrs[i].p_filesz > phdrs[i].p_memsz) - return 0; + continue; if(!phdrs[i].p_filesz) continue; unsigned int p_paddr = phdrs[i].p_paddr; - - // use correct offset address for executables and data access - if(phdrs[i].p_flags & PF_X) - p_paddr += CODE_RW_BASE_OFFSET; - else - p_paddr += DATA_RW_BASE_OFFSET; - image = (unsigned char *) (elfstart + phdrs[i].p_offset); - private_data->memcpy ((void *) p_paddr, image, phdrs[i].p_filesz); - private_data->DCFlushRange((void*)p_paddr, phdrs[i].p_filesz); + + private_data->memcpy ((void *) p_paddr, image, phdrs[i].p_filesz); + DCFlushRange((void*)p_paddr, phdrs[i].p_filesz); if(phdrs[i].p_flags & PF_X) - private_data->ICInvalidateRange ((void *) phdrs[i].p_paddr, phdrs[i].p_memsz); + ICInvalidateRange ((void *) p_paddr, phdrs[i].p_memsz); } //! clear BSS @@ -179,15 +491,31 @@ static unsigned int load_elf_image (private_data_t *private_data, unsigned char if(section_name[0] == '.' && section_name[1] == 'b' && section_name[2] == 's' && section_name[3] == 's') { private_data->memset((void*)shdr[i].sh_addr, 0, shdr[i].sh_size); - private_data->DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); + DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); } else if(section_name[0] == '.' && section_name[1] == 's' && section_name[2] == 'b' && section_name[3] == 's' && section_name[4] == 's') { private_data->memset((void*)shdr[i].sh_addr, 0, shdr[i].sh_size); - private_data->DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); + DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); } } + //! setup hooks + kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x25 * 4)), (unsigned int)KernelCopyData); + kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x25 * 4)), (unsigned int)KernelCopyData); + kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x25 * 4)), (unsigned int)KernelCopyData); + kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x25 * 4)), (unsigned int)KernelCopyData); + kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x25 * 4)), (unsigned int)KernelCopyData); + + //! store physical address for later use + addrphys_LiWaitOneChunk = private_data->OSEffectiveToPhysical((void*)OS_SPECIFICS->addr_LiWaitOneChunk); + + u32 addr_my_PrepareTitle_hook = ((u32)my_PrepareTitle_hook) | 0x48000003; + DCFlushRange(&addr_my_PrepareTitle_hook, 4); + + //! create our copy syscall + SC0x25_KernelCopyData(OS_SPECIFICS->addr_PrepareTitle_hook, private_data->OSEffectiveToPhysical(&addr_my_PrepareTitle_hook), 4); + return ehdr->e_entry; } @@ -213,9 +541,10 @@ static void loadFunctionPointers(private_data_t * private_data) OS_FIND_EXPORT(coreinit_handle, "memcpy", private_data->memcpy); OS_FIND_EXPORT(coreinit_handle, "memset", private_data->memset); OS_FIND_EXPORT(coreinit_handle, "OSFatal", private_data->OSFatal); - OS_FIND_EXPORT(coreinit_handle, "DCFlushRange", private_data->DCFlushRange); - OS_FIND_EXPORT(coreinit_handle, "ICInvalidateRange", private_data->ICInvalidateRange); - OS_FIND_EXPORT(coreinit_handle, "__os_snprintf", private_data->__os_snprintf); + OS_FIND_EXPORT(coreinit_handle, "DCFlushRange", DCFlushRange); + OS_FIND_EXPORT(coreinit_handle, "DCInvalidateRange", DCInvalidateRange); + OS_FIND_EXPORT(coreinit_handle, "ICInvalidateRange", ICInvalidateRange); + OS_FIND_EXPORT(coreinit_handle, "OSEffectiveToPhysical", private_data->OSEffectiveToPhysical); OS_FIND_EXPORT(coreinit_handle, "exit", private_data->exit); OS_FIND_EXPORT(coreinit_handle, "FSInit", private_data->FSInit); @@ -237,8 +566,10 @@ static void loadFunctionPointers(private_data_t * private_data) int _start(int argc, char **argv) { + private_data_t private_data; + + if(MAIN_ENTRY_ADDR != 0xC001C0DE) { - private_data_t private_data; loadFunctionPointers(&private_data); while(1) @@ -252,6 +583,7 @@ int _start(int argc, char **argv) private_data.memcpy(pElfBuffer, (unsigned char*)ELF_DATA_ADDR, ELF_DATA_SIZE); MAIN_ENTRY_ADDR = load_elf_image(&private_data, pElfBuffer); private_data.MEMFreeToDefaultHeap(pElfBuffer); + } ELF_DATA_ADDR = 0xDEADC0DE; ELF_DATA_SIZE = 0; @@ -259,30 +591,38 @@ int _start(int argc, char **argv) if(MAIN_ENTRY_ADDR == 0xDEADC0DE || MAIN_ENTRY_ADDR == 0) { - unsigned char *pElfBuffer = NULL; - unsigned int uiElfSize = 0; - - LoadFileToMem(&private_data, CAFE_OS_SD_PATH WIIU_PATH "/apps/homebrew_launcher/homebrew_launcher.elf", &pElfBuffer, &uiElfSize); - - if(!pElfBuffer) + if(HBL_CHANNEL) { - private_data.OSFatal("Could not load file " WIIU_PATH "/apps/homebrew_launcher/homebrew_launcher.elf"); + break; } else { - MAIN_ENTRY_ADDR = load_elf_image(&private_data, pElfBuffer); - private_data.MEMFreeToDefaultHeap(pElfBuffer); + unsigned char *pElfBuffer = NULL; + unsigned int uiElfSize = 0; - if(MAIN_ENTRY_ADDR == 0) + LoadFileToMem(&private_data, CAFE_OS_SD_PATH WIIU_PATH "/apps/homebrew_launcher/homebrew_launcher.elf", &pElfBuffer, &uiElfSize); + + if(!pElfBuffer) { - private_data.OSFatal("Failed to load ELF " WIIU_PATH "/apps/homebrew_launcher/homebrew_launcher.elf"); + private_data.OSFatal("Failed to load homebrew_launcher.elf"); + } + else + { + MAIN_ENTRY_ADDR = load_elf_image(&private_data, pElfBuffer); + if(MAIN_ENTRY_ADDR == 0) + { + private_data.OSFatal("Failed to load homebrew_launcher.elf"); + } + else + { + private_data.MEMFreeToDefaultHeap(pElfBuffer); + } } } } else { int returnVal = ((int (*)(int, char **))MAIN_ENTRY_ADDR)(argc, argv); - //! exit to miimaker and restart application on re-enter of another application if(returnVal == (int)EXIT_RELAUNCH_ON_LOAD) { @@ -293,12 +633,20 @@ int _start(int argc, char **argv) { MAIN_ENTRY_ADDR = 0xDEADC0DE; private_data.SYSRelaunchTitle(0, 0); - private_data.exit(); + private_data.exit(0); break; } } } } - return ( (int (*)(int, char **))(*(unsigned int*)OS_SPECIFICS->addr_OSTitle_main_entry) )(argc, argv); + int ret = ( (int (*)(int, char **))(*(unsigned int*)OS_SPECIFICS->addr_OSTitle_main_entry) )(argc, argv); + + //! if an application returns and was an RPX launch then launch HBL again + if(MAIN_ENTRY_ADDR == 0xC001C0DE) + { + private_data.SYSRelaunchTitle(0, 0); + private_data.exit(0); + } + return ret; } diff --git a/hbl_loader/sd_loader/src/kernel_defs.h b/hbl_loader/sd_loader/src/kernel_defs.h new file mode 100644 index 0000000..a1cce49 --- /dev/null +++ b/hbl_loader/sd_loader/src/kernel_defs.h @@ -0,0 +1,75 @@ +#ifndef __KERNEL_DEFS_H_ +#define __KERNEL_DEFS_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// original structure in the kernel that is originally 0x1270 long +typedef struct +{ + uint32_t version_cos_xml; // version tag from cos.xml + uint64_t os_version; // os_version from app.xml + uint64_t title_id; // title_id tag from app.xml + uint32_t app_type; // app_type tag from app.xml + uint32_t cmdFlags; // unknown tag as it is always 0 (might be cmdFlags from cos.xml but i am not sure) + char rpx_name[0x1000]; // rpx name from cos.xml + uint32_t unknown2; // 0x050B8304 in mii maker and system menu (looks a bit like permissions complex that got masked!?) + uint32_t unknown3[63]; // those were all zeros, but its probably connected with unknown2 + uint32_t max_size; // max_size in cos.xml which defines the maximum amount of memory reserved for the app + uint32_t avail_size; // avail_size or codegen_size in cos.xml (seems to mostly be 0?) + uint32_t codegen_size; // codegen_size or avail_size in cos.xml (seems to mostly be 0?) + uint32_t codegen_core; // codegen_core in cos.xml (seems to mostly be 1?) + uint32_t max_codesize; // max_codesize in cos.xml + uint32_t overlay_arena; // overlay_arena in cos.xml + uint32_t unknown4[59]; // all zeros it seems + uint32_t default_stack0_size; // not sure because always 0 but very likely + uint32_t default_stack1_size; // not sure because always 0 but very likely + uint32_t default_stack2_size; // not sure because always 0 but very likely + uint32_t default_redzone0_size; // not sure because always 0 but very likely + uint32_t default_redzone1_size; // not sure because always 0 but very likely + uint32_t default_redzone2_size; // not sure because always 0 but very likely + uint32_t exception_stack0_size; // from cos.xml, 0x1000 on mii maker + uint32_t exception_stack1_size; // from cos.xml, 0x1000 on mii maker + uint32_t exception_stack2_size; // from cos.xml, 0x1000 on mii maker + uint32_t sdk_version; // from app.xml, 20909 (0x51AD) on mii maker + uint32_t title_version; // from app.xml, 0x32 on mii maker + /* + // --------------------------------------------------------------------------------------------------------------------------------------------- + // the next part might be changing from title to title?! I don't think its important but nice to know maybe.... + // --------------------------------------------------------------------------------------------------------------------------------------------- + char mlc[4]; // string "mlc" on mii maker and sysmenu + uint32_t unknown5[7]; // all zeros on mii maker and sysmenu + uint32_t unknown6_one; // 0x01 on mii maker and sysmenu + // --------------------------------------------------------------------------------------------------------------------------------------------- + char ACP[4]; // string "ACP" on mii maker and sysmenu + uint32_t unknown7[15]; // all zeros on mii maker and sysmenu + uint32_t unknown8_5; // 0x05 on mii maker and sysmenu + uint32_t unknown9_zero; // 0x00 on mii maker and sysmenu + uint32_t unknown10_ptr; // 0xFF23DD0C pointer on mii maker and sysmenu + // --------------------------------------------------------------------------------------------------------------------------------------------- + char UVD[4]; // string "UVD" on mii maker and sysmenu + uint32_t unknown11[15]; // all zeros on mii maker and sysmenu + uint32_t unknown12_5; // 0x05 on mii maker and sysmenu + uint32_t unknown13_zero; // 0x00 on mii maker and sysmenu + uint32_t unknown14_ptr; // 0xFF23EFC8 pointer on mii maker and sysmenu + // --------------------------------------------------------------------------------------------------------------------------------------------- + char SND[4]; // string "SND" on mii maker and sysmenu + uint32_t unknown15[15]; // all zeros on mii maker and sysmenu + uint32_t unknown16_5; // 0x05 on mii maker and sysmenu + uint32_t unknown17_zero; // 0x00 on mii maker and sysmenu + uint32_t unknown18_ptr; // 0xFF23F014 pointer on mii maker and sysmenu + // --------------------------------------------------------------------------------------------------------------------------------------------- + uint32_t unknown19; // 0x02 on miimaker, 0x0F on system menu + */ + // after that only zeros follow +} __attribute__((packed)) CosAppXmlInfo; + + +#ifdef __cplusplus +} +#endif + +#endif // __KERNEL_DEFS_H_ diff --git a/hbl_loader/sd_loader/src/kernel_hooks.S b/hbl_loader/sd_loader/src/kernel_hooks.S index 7f70ebb..0d7f11f 100644 --- a/hbl_loader/sd_loader/src/kernel_hooks.S +++ b/hbl_loader/sd_loader/src/kernel_hooks.S @@ -27,3 +27,43 @@ SaveAndResetDataBATs_And_SRs_hook: mtsr 7, r5 # jump back to the position in kernel after our patch (from LR) bctr + +.extern my_PrepareTitle + .globl my_PrepareTitle_hook +my_PrepareTitle_hook: + # store all registers on stack to avoid issues with the call to C functions + stwu r1, -0x90(r1) + # registers for our own usage + # just store everything + stmw r3, 0x10(r1) + + # save the LR from where we came + mflr r31 + + # the cos.xml/app.xml structure is at the location 0x68 of r11 + # there are actually many places that can be hooked for it + # e.g. 0xFFF16130 and r27 points to this structure + addi r3, r11, 0x68 + + bl my_PrepareTitle + + # setup LR to jump back to kernel code + mtlr r31 + + # restore all original values of registers from stack + lmw r3, 0x10(r1) + + # restore the stack + addi r1, r1, 0x90 + + # restore original instruction that we replaced in the kernel + clrlwi r7, r12, 0 + + # jump back + blr + + .globl SC0x25_KernelCopyData +SC0x25_KernelCopyData: + li r0, 0x2500 + sc + blr diff --git a/hbl_loader/sd_loader/src/link.ld b/hbl_loader/sd_loader/src/link.ld index f57f59b..1d82ead 100644 --- a/hbl_loader/sd_loader/src/link.ld +++ b/hbl_loader/sd_loader/src/link.ld @@ -13,10 +13,11 @@ SECTIONS { .data : { *(.rodata*); *(.data*); + *(.bss*); } /DISCARD/ : { *(*); } } -ASSERT((SIZEOF(.text) + SIZEOF(.data)) < 0x1000, "Memory overlapping with main elf."); +ASSERT((SIZEOF(.text) + SIZEOF(.data)) < 0x1300, "Memory overlapping with main elf."); diff --git a/hbl_loader/sd_loader/src/loader_defs.h b/hbl_loader/sd_loader/src/loader_defs.h new file mode 100644 index 0000000..b71514f --- /dev/null +++ b/hbl_loader/sd_loader/src/loader_defs.h @@ -0,0 +1,38 @@ +#ifndef __LOADER_DEFS_H_ +#define __LOADER_DEFS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +// struct holding the globals of the loader (there are actually more but we don't need others) +typedef struct _loader_globals_t +{ + int sgIsLoadingBuffer; + int sgFileType; + int sgProcId; + int sgGotBytes; + int sgFileOffset; + int sgBufferNumber; + int sgBounceError; + char sgLoadName[0x1000]; +} __attribute__((packed)) loader_globals_t; + +typedef struct _loader_globals_550_t +{ + int sgFinishedLoadingBuffer; + int sgFileType; + int sgProcId; + int sgGotBytes; + int sgTotalBytes; + int sgFileOffset; + int sgBufferNumber; + int sgBounceError; + char sgLoadName[0x1000]; +} __attribute__((packed)) loader_globals_550_t; + +#ifdef __cplusplus +} +#endif + +#endif // __LOADER_DEFS_H_ diff --git a/zip/LICENSE b/zip/LICENSE new file mode 100644 index 0000000..bcfe47e --- /dev/null +++ b/zip/LICENSE @@ -0,0 +1,60 @@ +This is version 2007-Mar-4 of the Info-ZIP license. +The definitive version of this document should be available at +ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and +a copy at http://www.info-zip.org/pub/infozip/license.html. + + +Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + +For the purposes of this copyright and license, "Info-ZIP" is defined as +the following set of individuals: + + Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, + Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, + Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, + David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, + Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, + Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, + Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, + Rich Wales, Mike White. + +This software is provided "as is," without warranty of any kind, express +or implied. In no event shall Info-ZIP or its contributors be held liable +for any direct, indirect, incidental, special or consequential damages +arising out of the use of or inability to use this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the above disclaimer and the following restrictions: + + 1. Redistributions of source code (in whole or in part) must retain + the above copyright notice, definition, disclaimer, and this list + of conditions. + + 2. Redistributions in binary form (compiled executables and libraries) + must reproduce the above copyright notice, definition, disclaimer, + and this list of conditions in documentation and/or other materials + provided with the distribution. The sole exception to this condition + is redistribution of a standard UnZipSFX binary (including SFXWiz) as + part of a self-extracting archive; that is permitted without inclusion + of this license, as long as the normal SFX banner has not been removed + from the binary or disabled. + + 3. Altered versions--including, but not limited to, ports to new operating + systems, existing ports with new graphical interfaces, versions with + modified or added functionality, and dynamic, shared, or static library + versions not from Info-ZIP--must be plainly marked as such and must not + be misrepresented as being the original source or, if binaries, + compiled from the original source. Such altered versions also must not + be misrepresented as being Info-ZIP releases--including, but not + limited to, labeling of the altered versions with the names "Info-ZIP" + (or any variation thereof, including, but not limited to, different + capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the + explicit permission of Info-ZIP. Such altered versions are further + prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP + e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP + will provide support for the altered versions. + + 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," + "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its + own source and binary releases. diff --git a/zip/zip.exe b/zip/zip.exe new file mode 100644 index 0000000000000000000000000000000000000000..65de183062d5fbcf081cb861d5ee6cdd8ba7ecfa GIT binary patch literal 290816 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

k!Xb;$%ni=TtjxUm5!j1Dni1W2<;{c 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