C++ Вопрос Hooking

Модератор раздела «Создание читов CS2»
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
367
Поинты[?]
156K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пытаюсь хукнуть функцию, внутри хука вывожу инфу типа "here!", но она не выводится, хотя, как можете увидеть, все данные валидны.

1658861247285.png
C++:
find_sig - def.
ctx::m_spotify_image = GetModuleHandleA(nullptr);

bool hooks::hook(const LPVOID target, const LPVOID detour, LPVOID og)
{
    if (MH_CreateHook(target, detour, &og) == MH_OK && MH_EnableHook(target) == MH_OK)
    {
        printf("[ hook ] created target: 0x%p, detour: 0x%p, og: 0x%p\n", target, detour, og);
        m_targets.emplace_back(target);
        printf("[ hook ] targets size: %u\n", m_targets.size());
        return true;
    }

    return false;
}

void __fastcall hooks::create_track(void* ecx, void* edx, char a2)
{
    printf("here!\n");
    og::m_create_track(ecx, edx, a2);
}

void hooks::instance()
{
    if (MH_Initialize() == MH_OK)
    {
        static const auto f = static_cast<void*>(utils::find_sig(ctx::m_spotify_image,
                                                                 "68 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 8B F1 8B 8E ? ? ? ? 8A 5D 08"));
        hook(f, create_track, og::m_create_track);
    }
}
 
Murasaki
Разработчик
Статус
Оффлайн
Регистрация
18 Мар 2020
Сообщения
445
Реакции[?]
875
Поинты[?]
205K
Вызови MH_EnableHook

p.s. не увидел в проверке, извиняюсь, перейди по этому адресу и проверь, стоит ли джамп на твой детур
 
Последнее редактирование:
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
Пытаюсь хукнуть функцию, внутри хука вывожу инфу типа "here!", но она не выводится, хотя, как можете увидеть, все данные валидны.
все просто, эта функция не вызывается)
можешь у меня в unspotify глянуть че я хукаю ([actual address in first opcode] E8 ? ? ? ? 8B 45 AE)

+ у тебя так ничего в og записываться не будет, сделай либо ссылкой, либо сразу указатель в функцию передавай
 
Последнее редактирование:
Модератор раздела «Создание читов CS2»
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
367
Поинты[?]
156K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
все просто, эта функция не вызывается)
можешь у меня в unspotify глянуть че я хукаю ([actual address in first opcode] E8 ? ? ? ? 8B 45 AE)
Пожалуйста, авторизуйтесь для просмотра ссылки.

+ у тебя так ничего в og записываться не будет, сделай либо ссылкой, либо сразу указатель в функцию передавай
Все та же проблема, ничего не выводится) (наверное, все работает правильно, просто, как сказал ты выше, функция не вызывается, либо вызывается при определенном условии?)

Пожалуйста, авторизуйтесь для просмотра ссылки.
(хук и паттерн взял отсюда)
C++:
#define HOOK(target, detour, og) \
    if (MH_CreateHook(target, detour, reinterpret_cast<void**>(&(og))) == MH_OK &&  MH_EnableHook(target) == MH_OK){\
        printf("[ hook ] created target: 0x%p, detour: 0x%p, og: 0x%p\n", target, detour, og); \
        hooks::m_targets.emplace_back(target); \
        printf("[ hook ] targets size: %u\n", hooks::m_targets.size()); \
    }

void hooks::instance()
{
    if (MH_Initialize() == MH_OK)
    {
        static const auto f = static_cast<void*>(utils::find_sig(ctx::m_spotify_image,
                                                                 "20 20 20 20 43 72 65 61 74 69 6E 67 20 74 72 61 63 6B 20 70 6C 61 79 65 72 20 66 6F 72 20 74 72 61 63 6B 20 28 70 6C 61 79 62 61 63 6B 5F 69 64 20 25 73 29"));
        std::vector<int> pattern = {};
        pattern.emplace_back(0x68);
        for (int i = 0; i < 4; i++)
            pattern.emplace_back(static_cast<int>(((uint8_t*)&f)[i]));

        static const auto sig = utils::sig(ctx::m_spotify_image, pattern);
        HOOK(sig, create_track, og::m_create_track);
    }
}

void __fastcall hooks::create_track(void* ecx, void* edx, int a2,
    void* a3,
    double a4,
    int a5,
    int a6,
    int a7,
    int a8,
    int a9)
{
    printf("here!\n");
    og::m_create_track(ecx, edx, a2, a3, a4, a5, a6, a7, a8, a9);
}

std::uint8_t* utils::sig(const HMODULE module, std::vector<int> pattern_bytes_)
{
    if (!module)
        return nullptr;

    const auto dos_header = reinterpret_cast<PIMAGE_DOS_HEADER>(module);
    const auto nt_headers =
        reinterpret_cast<PIMAGE_NT_HEADERS>(reinterpret_cast<std::uint8_t*>(module) + dos_header->e_lfanew);

    const auto size_of_image = nt_headers->OptionalHeader.SizeOfImage;
    const auto scan_bytes = reinterpret_cast<std::uint8_t*>(module);

    const auto pattern_size = pattern_bytes_.size();
    const auto pattern_data = pattern_bytes_.data();

    for (auto i = 0ul; i < size_of_image - pattern_size; ++i)
    {
        bool found = true;

        for (auto j = 0ul; j < pattern_size; ++j)
        {
            if (scan_bytes[i + j] == pattern_data[j] || pattern_data[j] == -1)
                continue;
            found = false;
            break;
        }
        if (!found)
            continue;
        return &scan_bytes[i];
    }

    return nullptr;
}
 
Последнее редактирование:
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
вызывается при определенном условии?
Неправильно перенес себе в код мои сиги, у меня по xref'у ищется внутри функции реф на эту строчку и потом от строчки идет до начала функции
сига на старт нужной тебе функции: 68 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 89 8D ? ? ? ? 8B 45 18 (вызывается каждое переключение трека)
 
Последнее редактирование:
Модератор раздела «Создание читов CS2»
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
367
Поинты[?]
156K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не правильно перенес себе в код мои сиги, у меня по xref'у ищется внутри функции реф на эту строчку и потом от строчки идет до начала функции
сига на старт нужной тебе функции: 68 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 89 8D ? ? ? ? 8B 45 18 (вызывается каждое переключение трека)
Исправил, спасибо за помощь
1658935926946.png
 
Сверху Снизу