Вопрос Краш при вызове ориг функции LockCursor

Пользователь
Статус
Оффлайн
Регистрация
5 Фев 2018
Сообщения
134
Реакции[?]
33
Поинты[?]
0
курсор лочится нормально,но при обратном локе сразу краш(раньше вообще просто картинка зависала)
C++:
ISurface* g_VGuiSurface = utl->get_interface<ISurface>(utl->get_module_factory(GetModuleHandleW(L"vguimatsurface.dll")),
"VGUI_Surface031"); - iSurface

Код:
vmt->init(g_VGuiSurface);

        vmt->hook(hkLockCursor, index::LockCursor);
hkLockCursor = 67;
мои хуки -
Код:
void VmtManager::init(void* className)

{

    count = 0;

    base = nullptr;

    _new = nullptr;

    _orig = nullptr;

    base = (DWORD**)className;//с класса в неподписанный массив указателей (DWORD, DWORD* - massiv; DWORD** - pointers massive;

    do {

        count++;

    } while (reinterpret_cast<uintptr_t*>(*base)[count] != NULL);//ПОДСЧЕТ ФУНКЦИЙ, ЕСЛИ ФУНКЦИЯ == 0 - это неправильный индекс

    _orig = (uintptr_t*)*base;// оригинал всего класса

    _new = new DWORD[sizeof(DWORD) * count];//создание контейнера в блока памяти, равному всему классу бейс.

    memcpy(_new, _orig, sizeof(DWORD) * count);

}

void VmtManager::hook(void* hkFuncName, int index)

{

    DWORD old;

    VirtualProtect(base, sizeof(DWORD), PAGE_EXECUTE_READWRITE, &old);

    _new[index] = (uintptr_t)(hkFuncName);

    *base = _new;

    VirtualProtect(base, sizeof(DWORD), old, &old);

}
хук локКурсора -
Код:
long __stdcall hkLockCursor(void* _this)

{

    static bool initCheck = false;

    static auto hkLockCursorOrig = vmt->originalFunc<decltype(&hkLockCursor)>(index::LockCursor);//orig func

    if (booleans::initMenu)

    {

        initCheck = true;

        g_VGuiSurface->UnlockCursor();

    //    sFunc.g_InputSystem->ResetInputState();

    }

    else

    {

        if (initCheck)

        {

            return hkLockCursorOrig(g_VGuiSurface);

        }

    

    }

}

вообще хз что делать, уже все перепробовал. Дебаг вообще странно себя ведет. он крашится еще на паттерн скане для хука энд сцены(она норм хукается и отрисовывается, так же, как и ресет)
 
Пользователь
Статус
Оффлайн
Регистрация
5 Фев 2018
Сообщения
134
Реакции[?]
33
Поинты[?]
0
созрел вопрос, почему если хукать сначала энд сцену, а после лок курсор, то картинка зависает на 1 месте(звуки кнопок и тд есть)
 
Сверху Снизу