diff --git a/sysmodules/loader/source/patcher.c b/sysmodules/loader/source/patcher.c index f38e3a4..10c6b04 100644 --- a/sysmodules/loader/source/patcher.c +++ b/sysmodules/loader/source/patcher.c @@ -817,6 +817,16 @@ void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 ro 0x00, 0x00, 0x00, 0x00 }; + static const u8 pattern2[] = { + 0x20, 0x82, 0xa8, 0x7e, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x20, 0xa0, 0x77 + }, + pattern3[] = { + 0x42 + }, + patch2[] = { + 0xC0, 0x46 // mov r8, r8 + }; + //Patch DLP region check if(!patchMemory(code, textSize, pattern, @@ -824,6 +834,16 @@ void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 ro patch, sizeof(patch), 1 )) goto error; + + // Patch DLP client region check + u8 *found = memsearch(code, pattern2, textSize, sizeof(pattern2)); + + if (!patchMemory(found, textSize, + pattern3, + sizeof(pattern3), 1, + patch2, + sizeof(patch2), 1 + )) goto error; } else if((progId & ~0xF0000001ULL) == 0x0004013000001A02LL) //DSP, SAFE_FIRM DSP