Remove the anti-DG check on 11.0 firmware (and future ones)

This commit is contained in:
TuxSH 2016-05-25 20:50:45 +02:00
parent a3ae38520c
commit 7ea2a0a278
3 changed files with 13 additions and 0 deletions

View File

@ -290,6 +290,9 @@ static inline void patchNativeFirm(u32 nandType, u32 emuHeader, u32 a9lhMode)
//Apply signature patches //Apply signature patches
patchSignatureChecks(process9Offset, process9Size); patchSignatureChecks(process9Offset, process9Size);
//Apply anti-anti-DG patches for >= 11.0 firmwares
if(nativeFirmType == 1) patchTitleInstallMinVersionCheck(process9Offset, process9Size);
//Apply emuNAND patches //Apply emuNAND patches
if(nandType) if(nandType)
{ {

View File

@ -34,6 +34,15 @@ void patchSignatureChecks(u8 *pos, u32 size)
off2[1] = sigPatch[1]; off2[1] = sigPatch[1];
} }
void patchTitleInstallMinVersionCheck(u8 *pos, u32 size)
{
const u8 pattern[] = {0x89, 0x0A, 0x81, 0x42, 0x02, 0xD2};
u8 *off = memsearch(pos, pattern, size, 6);
if(off != NULL) off[5] = 0xE0;
}
void patchFirmlaunches(u8 *pos, u32 size, u32 process9MemAddr) void patchFirmlaunches(u8 *pos, u32 size, u32 process9MemAddr)
{ {
//Look for FIRM reboot code //Look for FIRM reboot code

View File

@ -17,6 +17,7 @@ typedef struct patchData {
u8 *getProcess9(u8 *pos, u32 size, u32 *process9Size, u32 *process9MemAddr); u8 *getProcess9(u8 *pos, u32 size, u32 *process9Size, u32 *process9MemAddr);
void patchSignatureChecks(u8 *pos, u32 size); void patchSignatureChecks(u8 *pos, u32 size);
void patchTitleInstallMinVersionCheck(u8 *pos, u32 size);
void patchFirmlaunches(u8 *pos, u32 size, u32 process9MemAddr); void patchFirmlaunches(u8 *pos, u32 size, u32 process9MemAddr);
void patchFirmWrites(u8 *pos, u32 size); void patchFirmWrites(u8 *pos, u32 size);
void patchFirmWriteSafe(u8 *pos, u32 size); void patchFirmWriteSafe(u8 *pos, u32 size);