Minor stuff
This commit is contained in:
parent
b830909504
commit
c1f85650bd
@ -240,6 +240,8 @@ static inline u8 *getCfgOffsets(u8 *code, u32 size, u32 *CFGUHandleOffset)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(n > 0)
|
||||||
|
{
|
||||||
for(u8 *CFGU_GetConfigInfoBlk2_endPos = code; CFGU_GetConfigInfoBlk2_endPos < code + size - 8; CFGU_GetConfigInfoBlk2_endPos += 4)
|
for(u8 *CFGU_GetConfigInfoBlk2_endPos = code; CFGU_GetConfigInfoBlk2_endPos < code + size - 8; CFGU_GetConfigInfoBlk2_endPos += 4)
|
||||||
{
|
{
|
||||||
static const u32 CFGU_GetConfigInfoBlk2_endPattern[] = {0xE8BD8010, 0x00010082};
|
static const u32 CFGU_GetConfigInfoBlk2_endPattern[] = {0xE8BD8010, 0x00010082};
|
||||||
@ -257,6 +259,7 @@ static inline u8 *getCfgOffsets(u8 *code, u32 size, u32 *CFGUHandleOffset)
|
|||||||
CFGU_GetConfigInfoBlk2_endPos += 4;
|
CFGU_GetConfigInfoBlk2_endPos += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -267,8 +270,10 @@ static inline u32 patchCfgGetLanguage(u8 *code, u32 size, u8 languageId, u8 *CFG
|
|||||||
|
|
||||||
for(CFGU_GetConfigInfoBlk2_startPos = CFGU_GetConfigInfoBlk2_endPos - 4;
|
for(CFGU_GetConfigInfoBlk2_startPos = CFGU_GetConfigInfoBlk2_endPos - 4;
|
||||||
CFGU_GetConfigInfoBlk2_startPos >= code && *((u16 *)CFGU_GetConfigInfoBlk2_startPos + 1) != 0xE92D;
|
CFGU_GetConfigInfoBlk2_startPos >= code && *((u16 *)CFGU_GetConfigInfoBlk2_startPos + 1) != 0xE92D;
|
||||||
CFGU_GetConfigInfoBlk2_startPos -= 2);
|
CFGU_GetConfigInfoBlk2_startPos -= 4);
|
||||||
|
|
||||||
|
if(CFGU_GetConfigInfoBlk2_startPos >= code)
|
||||||
|
{
|
||||||
for(u8 *languageBlkIdPos = code; languageBlkIdPos < code + size; languageBlkIdPos += 4)
|
for(u8 *languageBlkIdPos = code; languageBlkIdPos < code + size; languageBlkIdPos += 4)
|
||||||
{
|
{
|
||||||
if(*(u32 *)languageBlkIdPos == 0xA0002)
|
if(*(u32 *)languageBlkIdPos == 0xA0002)
|
||||||
@ -307,6 +312,7 @@ static inline u32 patchCfgGetLanguage(u8 *code, u32 size, u8 languageId, u8 *CFG
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -321,14 +327,14 @@ static inline u32 patchCfgGetRegion(u8 *code, u32 size, u8 regionId, u32 CFGUHan
|
|||||||
|
|
||||||
if(*cmp == cfgSecureInfoGetRegionCmdPattern[1])
|
if(*cmp == cfgSecureInfoGetRegionCmdPattern[1])
|
||||||
{
|
{
|
||||||
for(u32 i = 1; i < 4; i++)
|
for(u32 i = 1; i < 3; i++)
|
||||||
if((*(cmp - i) & 0xFFFF0FFF) == cfgSecureInfoGetRegionCmdPattern[0] && *((u16 *)cmdPos + 5) == 0xE59F &&
|
if((*(cmp - i) & 0xFFFF0FFF) == cfgSecureInfoGetRegionCmdPattern[0] && *((u16 *)cmdPos + 5) == 0xE59F &&
|
||||||
*(u32 *)(cmdPos + 16 + *((u16 *)cmdPos + 4)) == CFGUHandleOffset)
|
*(u32 *)(cmdPos + 16 + *((u16 *)cmdPos + 4)) == CFGUHandleOffset)
|
||||||
{
|
{
|
||||||
cmp[3] = 0xE3A00000 | regionId; //mov r0, =regionId
|
cmp[3] = 0xE3A00000 | regionId; //mov r0, =regionId
|
||||||
cmp[4] = 0xE5C40008; //strb r0, [r4, 8]
|
cmp[4] = 0xE5C40008; //strb r0, [r4, #8]
|
||||||
cmp[5] = 0xE3B00000; //movs r0, 0 (result code) ('s' not needed but nvm)
|
cmp[5] = 0xE3A00000; //mov r0, #0 (result code)
|
||||||
cmp[6] = 0xE5840004; //str r0, [r4, 4]
|
cmp[6] = 0xE5840004; //str r0, [r4, #4]
|
||||||
|
|
||||||
//The remaining, not patched, function code will do the rest for us
|
//The remaining, not patched, function code will do the rest for us
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user