Изменение памяти в других процессах 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;
        }
    }

Ответы (0 шт):