Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

/del

Статус
В этой теме нельзя размещать новые ответы.
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
24
Реакции
6
2.21. Запрещено редактировать название темы или своё сообщение на «/del» во всех случаях (продажа аккаунта, получение ответа на свой вопрос и так далее), кроме флуда.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вот что надо хукнуть
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вот простой код с видосика
C++:
Expand Collapse Copy
bool Detour32(void* src, void* dst, int len)
{
    if (len < 5) return false;

    DWORD curProtection;
    VirtualProtect(src, len, PAGE_EXECUTE_READWRITE, &curProtection);

    memset(src, 0x90, len);

    DWORD relativeAddress = ((DWORD)dst - (DWORD)src) - 5;

    *(BYTE*)src = 0xE9;
    *(DWORD*)((DWORD)src + 1) = relativeAddress;

    DWORD temp;
    VirtualProtect(src, len, curProtection, &temp);

    return true;
}
DWORD jump_back;

void __declspec(naked) Ourmain() {
    __asm {
        add esp, 4
        push 1
        jmp [jump_back]
        }
}




DWORD WINAPI MainThread(LPVOID param) {
    DWORD hook_adr = 0xB71011;
    int byte_len = 5;
    jump_back = hook_adr + byte_len;
    Detour32((void*)hook_adr, Ourmain, byte_len);
  
    FreeLibraryAndExitThread((HMODULE)param, 0);

    return 0;
}
В итоге ставиться хук на несуществующий адрес, но вернее он существует, но он существует в пределах самой dll, указателя на которую нет, а в видосе с gh этот адрес от длл существует в пределах главного потока программы, непонятно как:
Пожалуйста, авторизуйтесь для просмотра ссылки.

и сообщение об ошибке:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Подскажите что не так? В чем тут ошибка в вычислении relativeadress или что? Я без понятия ибо делал все как показано в гидхакинге там это и понятно вроде, но на деле хрень
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
DWORD Adr= Getmodulehandle("имя модуля.расширение")+0x1017;// это смещение от начало модуля до места где надо хукнуть
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
DWORD Adr= Getmodulehandle("имя модуля.расширение")+0x1017;// это смещение от начало модуля до места где надо хукнуть
Начало какого модуля ? У меня хук ставиться в главном потоке программы, там не нужно смещение относительно модуля, просто дело в непонятном мне рассчете адреса до функции хука
Тоесть мне получается надо узнавать адрес собственного модуля,который я заинжектил и к нему просто прибавлять ссылку на мою функцию?
А в самой функции хука у меня есть jump на адрес вызова + 5 байт, и как мне тогда вернуться к главному потоку будет?
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Тоесть мне получается надо узнавать адрес собственного модуля,который я заинжектил и к нему просто прибавлять ссылку на мою функцию?
Да.
Это не ссылка, а смещение от базового адреса до функции.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да.
Это не ссылка, а смещение от базового адреса до функции.
Ну вот я делал все как ты сказал
вот адрес функции на которую я делаю jmp
Снимок экрана 2021-04-11 143242.jpg


Вот код

Снимок экрана 2021-04-11 143610.jpg

И вот установка джампа на адрес
Снимок экрана 2021-04-11 143630.jpg

В итоге опять джамп в несуществующий адрес и краш, я без понятия как эта хрень работает лол
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну вот я делал все как ты сказал
вот адрес функции на которую я делаю jmp
Посмотреть вложение 143215

Вот код

Посмотреть вложение 143216
И вот установка джампа на адрес
Посмотреть вложение 143217
В итоге опять джамп в несуществующий адрес и краш, я без понятия как эта хрень работает лол
+0x1070;
Смотриш в IDA базовый адрес модуля.
Адрес где ставить хук - базовый адрес = смещение
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
+0x1070;
Смотриш в IDA базовый адрес модуля.
Адрес где ставить хук - базовый адрес = смещение
Ну а я тогда не возьму адресс функции, дело в том, что тогда эта функция в самой длл не будет юзаться, ну то есть будет ссылка на нее, но функция использоваться при этом не будет в моей длл и тогда ассемблер не будет ее собирать и я ее в иде не нахожу поэтому просто, в иде она отображается когда она юзается самой длл.
Но меня на данный момент волнует другой вопрос, почему у этого чела в видео где он считает адрес по :
((DWORD)указатель на хук - (DWORD)адрес прыжка ) - 5; все работает прекрасно -
(noadd) 9:22 ?
И причем на самом видео в плагинах ollydbg видно что он инжектит длл именно как remote thread, то есть так он получает укзатель на функцию в другой длл и причем на самом GH и в комментах ни у кого нет таких проблем как у меня, у всех все работает заебато
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу