Help, please!

Статус
В этой теме нельзя размещать новые ответы.
Пользователь
Статус
Оффлайн
Регистрация
5 Фев 2018
Сообщения
134
Реакции[?]
33
Поинты[?]
0
1580551331541.png
oFunc крашит.
хуки работают нормально, эндсцену/ресет возвращает норм, а тут треш.
VmtManager.h
C++:
class VmtManager
{
public:
    VmtManager()
    {

    }
    VmtManager(void* base);
    ~VmtManager()
    {
        delete _newTable;
        count = 0;
    }
    bool setup(void* classN);


    template<typename T>
    void hook_index(int index, T fun)
    {

        _newTable[index] = reinterpret_cast<uintptr_t>(fun);
        DWORD old;
        VirtualProtect(class_base, sizeof(DWORD)*count, PAGE_EXECUTE_READWRITE, &old);
        *class_base = (uintptr_t*)_newTable;
        VirtualProtect(class_base, sizeof(DWORD)*count, old, &old);

    }

    template<typename T>
    T get_original(int index)
    {
        return (T)_original[index];
    }
private:
    uintptr_t** class_base = nullptr;
    uintptr_t* _original = nullptr;
    uintptr_t* AllTables = nullptr;
    DWORD* _newTable = nullptr;
    int count = 0;
};
namespace HooksInline
{
    inline VmtManager direct3d_hook;
    inline VmtManager secondHook;
    inline VmtManager surfaceHook;
}
VmtManager.cpp
C++:
#include "VmtManager.h"
#include "project.hpp"

bool VmtManager::setup(void* classN)
{
    if (classN != nullptr)
    {
        class_base = reinterpret_cast<uintptr_t**>(classN);
        _original = *class_base;
        while (reinterpret_cast<uintptr_t**>(*class_base)[count])
        {
            count++;
        }
        _newTable = new DWORD[sizeof(DWORD) * count];//ñîçäàíèå êîíòåéíåðà â áëîêà ïàìÿòè, ðàâíîìó âñåìó êëàññó áåéñ.
        memcpy(_newTable, _original, sizeof(DWORD) * count);
        return true;

    }
}
g_vGuiSurface != nullptr!!!!
 
Пользователь
Статус
Оффлайн
Регистрация
5 Фев 2018
Сообщения
134
Реакции[?]
33
Поинты[?]
0
SOLVED!!! , Кто столкнется с такой же проблемой -
C++:
typedef void(__thiscall* LockCursor)(void*);
void __stdcall hkLockCursor(void* _this)
{
    static auto ofunc = HooksInline::surfaceHook.get_original<LockCursor>(index::LockCursor);
        if (booleans::initMenu) {
            Surface::g_VGuiSurface->UnlockCursor();
        //    g_InputSystem->ResetInputState();
            return;
        }
        ofunc(Surface::g_VGuiSurface);
}
вся функция
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу