C++ Что не правильного в функции хука?

На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,025
Реакции[?]
181
Поинты[?]
70K
C++:
  void setup_hook( LPVOID fake, LPVOID orig, uintptr_t address, const char* module = "WTL-Win64-Shipping.exe" )
    {
        auto hook_address = (uintptr_t) ( (uintptr_t) GetModuleHandleA( module ) + address );
        if ( MH_CreateHook( reinterpret_cast<LPVOID>( hook_address ), fake, (void**) ( &orig ) ) != MH_STATUS::MH_OK ) { M( "Hook setup failed" );  return; }
        if ( MH_EnableHook( reinterpret_cast<LPVOID>( hook_address ) ) != MH_STATUS::MH_OK ) { M( "Hook enable failed" );  return; }
    }
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
хз че у тебя именно не так но я вот так делаю

C++:
bool hook::install_hook( std::uintptr_t address, LPVOID function, LPVOID* original, std::string_view name ) {
    static bool init = false;
    if ( !init ) {
        MH_Initialize( );
        init = true;
    }

    MH_CreateHook( reinterpret_cast<LPVOID>(address), function, original );
    const auto status = MH_EnableHook( reinterpret_cast<LPVOID>(address) );
    if ( status == MH_STATUS::MH_OK ) {
        hook::hooks[name] = address;

        std::cout << "   [" << name << "] hook installed at 0x" << std::hex << address << std::endl;
    }
    return status == MH_STATUS::MH_OK;
}
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,025
Реакции[?]
181
Поинты[?]
70K
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,025
Реакции[?]
181
Поинты[?]
70K
хз че у тебя именно не так но я вот так делаю

C++:
bool hook::install_hook( std::uintptr_t address, LPVOID function, LPVOID* original, std::string_view name ) {
    static bool init = false;
    if ( !init ) {
        MH_Initialize( );
        init = true;
    }

    MH_CreateHook( reinterpret_cast<LPVOID>(address), function, original );
    const auto status = MH_EnableHook( reinterpret_cast<LPVOID>(address) );
    if ( status == MH_STATUS::MH_OK ) {
        hook::hooks[name] = address;

        std::cout << "   [" << name << "] hook installed at 0x" << std::hex << address << std::endl;
    }
    return status == MH_STATUS::MH_OK;
}
как вызываешь ?
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
541
Поинты[?]
154K
шёл 2023 год люди юзают минхук в еак играх
 
Сверху Снизу