add reF00D Support.

This commit is contained in:
AtelierWindows\SilicaAndPina 2019-01-11 13:54:09 +13:00
parent a138f9ba7d
commit 355f463e00
1 changed files with 35 additions and 21 deletions

View File

@ -77,6 +77,8 @@ static tai_hook_ref_t runHook_ref;
static int isAllowedSerialHook = -1; static int isAllowedSerialHook = -1;
static tai_hook_ref_t isAllowedSerial_ref; static tai_hook_ref_t isAllowedSerial_ref;
int ret = 0; int ret = 0;
int pid; int pid;
@ -146,7 +148,7 @@ int ksceRtcGetCurrentTick_patched(unsigned int* timestamp) //fake valid time
return ret; return ret;
} }
int isAllowedSerial_patch(int arg1, int arg2, int arg3, int arg4) { //Tell f00d to fuck off int isAllowedSerial_patch(int arg1, int arg2, int arg3, int arg4) { //Not acturally needed for reF00D but kept to remain backwards-compadible with RePatch compati packs.
TAI_CONTINUE(int, isAllowedSerial_ref,arg1,arg2,arg3,arg4); TAI_CONTINUE(int, isAllowedSerial_ref,arg1,arg2,arg3,arg4);
return 1; return 1;
} }
@ -163,8 +165,8 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
if ((flags == 0x1000000 && strstr(path, "PCSI00007"))) //SUITE if ((flags == 0x1000000 && strstr(path, "PCSI00007"))) //SUITE
{ {
ksceIoMkdir("ux0:/cache",6);
ksceIoMkdir("ux0:/cache/PCSI00007",6);
ksceIoMkdir("ux0:/cache/PCSI00007/_System",6); ksceIoMkdir("ux0:/cache/PCSI00007/_System",6);
if(!fileExists("ux0:/cache/PCSI00007/_System/Code")) if(!fileExists("ux0:/cache/PCSI00007/_System/Code"))
@ -199,9 +201,11 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
char *NewPath; char *NewPath;
NewPath = path + sizeof("ux0:/patch/PCSI00007/") - 1; NewPath = path + sizeof("ux0:/patch/PCSI00007/") - 1;
snprintf(buf,1024,"ux0:/repatch/PCSI00007/%s",NewPath); snprintf(buf,1024,"ux0:/repatch/PCSI00007/%s",NewPath);
if(fileExists(buf))
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk); {
return ret; ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk);
return ret;
}
} }
if ((flags == 0x1000000 && strstr(path, "ux0:/app/PCSI00007"))) if ((flags == 0x1000000 && strstr(path, "ux0:/app/PCSI00007")))
@ -211,9 +215,11 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
char *NewPath; char *NewPath;
NewPath = path + sizeof("ux0:/app/PCSI00007/") - 1; NewPath = path + sizeof("ux0:/app/PCSI00007/") - 1;
snprintf(buf,1024,"ux0:/repatch/PCSI00007/%s",NewPath); snprintf(buf,1024,"ux0:/repatch/PCSI00007/%s",NewPath);
if(fileExists(buf))
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk); {
return ret; ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk);
return ret;
}
} }
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, path, unk); ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, path, unk);
@ -224,6 +230,9 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
if ((flags == 0x1000000 && strstr(path, "PCSI00009"))) //UNITY if ((flags == 0x1000000 && strstr(path, "PCSI00009"))) //UNITY
{ {
ksceIoMkdir("ux0:/cache",6);
ksceIoMkdir("ux0:/cache/PCSI00009",6);
ksceIoMkdir("ux0:/cache/PCSI00009/_System",6);
if(strstr(path,"eboot.bin")) //MAIN SELF if(strstr(path,"eboot.bin")) //MAIN SELF
{ {
@ -286,9 +295,11 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
char *NewPath; char *NewPath;
NewPath = path + sizeof("ux0:/patch/PCSI00009/") - 1; NewPath = path + sizeof("ux0:/patch/PCSI00009/") - 1;
snprintf(buf,1024,"ux0:/repatch/PCSI00009/%s",NewPath); snprintf(buf,1024,"ux0:/repatch/PCSI00009/%s",NewPath);
if(fileExists(buf))
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk); {
return ret; ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk);
return ret;
}
} }
if ((flags == 0x1000000 && strstr(path, "ux0:/app/PCSI00009"))) if ((flags == 0x1000000 && strstr(path, "ux0:/app/PCSI00009")))
@ -298,11 +309,12 @@ static SceUID _ksceKernelLaunchAppPatched(void *args)
char *NewPath; char *NewPath;
NewPath = path + sizeof("ux0:/app/PCSI00009/") - 1; NewPath = path + sizeof("ux0:/app/PCSI00009/") - 1;
snprintf(buf,1024,"ux0:/repatch/PCSI00009/%s",NewPath); snprintf(buf,1024,"ux0:/repatch/PCSI00009/%s",NewPath);
if(fileExists(buf))
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk); {
return ret; ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, buf, unk);
return ret;
}
} }
ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, path, unk); ret = TAI_CONTINUE(int, runHook_ref, titleid, flags, path, unk);
return ret; return ret;
@ -324,6 +336,8 @@ static SceUID ksceKernelLaunchApp_patched(char *titleid, uint32_t flags, char *p
} }
void _start() __attribute__ ((weak, alias ("module_start"))); void _start() __attribute__ ((weak, alias ("module_start")));
int module_start(SceSize argc, const void *args) int module_start(SceSize argc, const void *args)
{ {
@ -338,18 +352,18 @@ int module_start(SceSize argc, const void *args)
0x0351D827, // SceRtcForDriver 0x0351D827, // SceRtcForDriver
0x401C0954, // ksceRtcGetCurrentSecureTick 0x401C0954, // ksceRtcGetCurrentSecureTick
ksceRtcGetCurrentSecureTick_patched); ksceRtcGetCurrentSecureTick_patched);
if(fileExists("ux0:/repatch/PCSI00009/eboot.bin") || fileExists("ux0:/repatch/PCSI00007/eboot.bin"))
isAllowedSerialHook = taiHookFunctionExportForKernel(KERNEL_PID, {
isAllowedSerialHook = taiHookFunctionExportForKernel(KERNEL_PID,
&isAllowedSerial_ref, &isAllowedSerial_ref,
"SceSblACMgr", "SceSblACMgr",
0x9AD8E213, // SceSblACMgrForDriver 0x9AD8E213, // SceSblACMgrForDriver
0x062CAEB2, // isAllowedSerial 0x062CAEB2, // isAllowedSerial
isAllowedSerial_patch); isAllowedSerial_patch);
printf("isAllowedSerialHook: %x\n",isAllowedSerialHook);
}
printf("RunHook: %x\n",runHook); printf("RunHook: %x\n",runHook);
printf("SecureHook: %x\n",secureHook); printf("SecureHook: %x\n",secureHook);
printf("isAllowedSerialHook: %x\n",isAllowedSerialHook);
return SCE_KERNEL_START_SUCCESS; return SCE_KERNEL_START_SUCCESS;
} }