Изменение памяти в других процессах Android NDK
Я пишу библиотеку на c++ для своего приложения на Android, я изменяю поведение другой библиотеке, которая есть в моём apk, при изменении target sdk с 28 на 33, данный код на 5 строке приводит к вылету, как решить данную проблему? Переписать libGTASA я не могу.
char* PLAYERS_REALLOC = nullptr;
PLAYERS_REALLOC = ((char* (*)(uint32_t))(g_libGTASA + 0x179B40))(404 * 257 * sizeof(char));
memset(PLAYERS_REALLOC, 0, 404 * 257);
unProtect(g_libGTASA + 0x5D021C);
*(char**)(g_libGTASA + 0x5D021C) = PLAYERS_REALLOC;
void unProtect(uintptr_t ptr, size_t dwSize)
{
if (dwSize)
{
auto* to_page = (unsigned char*)((unsigned int)(ptr) & 0xFFFFF000);
size_t page_size = 0;
for (int i = 0, j = 0; i < dwSize; ++i)
{
page_size = j * 4096;
if (&((unsigned char*)(ptr))[i] >= &to_page[page_size])
++j;
}
mprotect(to_page, page_size, PROT_READ | PROT_WRITE | PROT_EXEC);
return;
}
}