Скрыть чат

smvrty

Новичок
Автор темы
29
4
Приветствую. Как можно убрать чат и запретить его открытие стандартными средствами без использования SAMPFUNCS и тп?

Пробовал таким образом:

C++:
    DWORD sampBase = (DWORD)GetModuleHandle("samp.dll");
    bool chatVP = false;

    void ShowChat(bool show) {
        DWORD temp;

        DWORD chatKeyT = sampBase + 0x5DAF4 + 0x11;
        DWORD chatKeyF6 = sampBase + 0x5D891;
        DWORD chatRender = sampBase + 0x63D70;

        if (!chatVP) {
            VirtualProtect((void*)chatKeyT, 0x1, PAGE_EXECUTE_READWRITE, &temp);
            VirtualProtect((void*)chatKeyF6, 0x1, PAGE_EXECUTE_READWRITE, &temp);
            VirtualProtect((void*)chatRender, 0x1, PAGE_EXECUTE_READWRITE, &temp);
            chatVP = true;
        }

        *(byte*)chatKeyT = show ? 0x75 : 0xEB;
        *(byte*)chatKeyF6 = show ? 0x8B : 0xC3;
        *(byte*)chatRender = show ? 0x55 : 0xC3;
    }
но прежде чем чат откроется/закроется довольно большая задержка (3-4 секунды) и можно открыть чат нажав Ё (тильда). Есть другие способы или дополнения к данному?
 
Последнее редактирование:

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
Можно просто на пролог рендера чата поставить ноп (0x90) и он не будет показываться
Нопы пролетят, дальше поедет код функции, регистры не сохранятся, и ты получишь UB
Поэтому надо либо ставить ret, предварительно сместив stack pointer, либо нопить вызовы