Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.06.2022
Сообщений: 3

Проблема с хуком pr_write

20.10.2022, 20:28. Показов 973. Ответов 1

Студворк — интернет-сервис помощи студентам
Парни, нужен хелп. Пытаюсь перехватить pr_write (исходник не мой) в ФФ. Сам инжект длл в процесс проходит нормально, при хуке ф-ции где-то происходит ошибка. Процесс не крашится, но реакции нет. Подскажите, в чем проблема?

Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
typedef int (*PR_Write)(void* fd, const void* buf, int amount);
PR_Write old = (PR_Write)(ProcAddress);
 
int HookedPR_Write(void* fd, char* buf, int amount) {
    
    MessageBoxA(NULL,"hooked func","",MB_OK);   
    return old(fd, buf, amount);
}
 
BYTE* Trampoline(BYTE* src, BYTE* dst, int len) {
    BYTE    patch[5];
    BYTE* addr = (BYTE*)VirtualAlloc(NULL, len, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    SIZE_T written;
    memcpy_s(addr, len, src, len);
    uintptr_t gatewayrelative = src - addr - 5;
 
    memcpy_s(patch, 1, "\xE9", 1);
    
    *(uintptr_t*)(patch + 1) = gatewayrelative;
    
    if (!WriteProcessMemory(GetCurrentProcess(), addr + len, patch, 5, &written))
        MessageBoxA(NULL, "WriteProcessMemory error", "", MB_OK);
    Detour(src, dst, len);
    return addr;
}
 
void Detour(BYTE* src, BYTE* dst, int len) {
    BYTE patch[11];
    SIZE_T written;
    
    uintptr_t relative_addr = dst - src - 5;
    memcpy_s(patch, 1, "\xE9", 1);
    *(uintptr_t*)(patch + 1) = relative_addr;
    memset(patch + 5, 0x90, len - 5);
    if (!WriteProcessMemory(GetCurrentProcess(), ProcAddress, patch, sizeof(patch), &written))
        MessageBoxA(NULL, "WriteProcessMemory detour error", "Caption", MB_OK); 
}
 
 
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    ProcAddress = (void*)GetProcAddress(LoadLibraryA("nss3.dll"), "PR_Write");
    int stopSize = 0;
    while (*((BYTE*)ProcAddress + stopSize) != 0xFF) {
        stopSize++;
    }
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        if (ProcAddress != NULL) {
            old = (PR_Write)Trampoline((BYTE*)ProcAddress, (BYTE*)HookedPR_Write, stopSize);
        }
    }
    return TRUE;
}
Добавлено через 5 минут
на строку
*(uintptr_t*)(patch + 1) = relative_addr
компилятор выдает предупреждение:
warning C4739: reference to variable 'patch' exceeds its storage space
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2022, 20:28
Ответы с готовыми решениями:

Проблема с хуком
Подскажите в чем проблема и как это можно решить? Создал хук на события мыши и некоторых клавиш, он их перехватывает но вместо одного...

Проблема с хуком на dll (64x)
Здравствуйте, есть такая проблема, я пытаюсь перехватить в WS2_32.dll функцию recv в своей программе 64x, но проблема в том что джамп...

непонятная проблема с хуком и меню
Запускается Exe-шник, вешается хук на VB нитку, отлавливается WM_CREATE для того, чтобы измениь стиль появляющихся Menu и Popup...

1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
21.10.2022, 13:41
Лучший ответ Сообщение было отмечено cpp_new как решение

Решение

Цитата Сообщение от cpp_new Посмотреть сообщение
WriteProcessMemory(GetCurrentProcess()
так вы куда пишите?
себе в процесс или в процесс, который нужно хукнуть?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2022, 13:41
Помогаю со студенческими работами здесь

Проблема с хуком клавиатуры и OdbcConnection на х64
Приветствую. В программе имеется глобальный перехват нажатий клавиш и подключение к БД Access по OdbcConnection. Когда подключение к БД...

Проблема с хуком клавиатуры и OdbcConnection на х64?
Приветствую. В программе имеется глобальный перехват нажатий клавиш и подключение к БД Access по OdbcConnection. Когда подключение к БД...

Прoблемa с хуком
Всем привет! Делаю прогу повторяющую действия, хочу сделать на воспроизведении действий возможность остановки воспроизведения, у меня...

Работа с глобальным хуком
Сабж. Знаю, в инете полно, какой рабочий, т.е. каким вы пользовались и у вас получилось? п.с. хук имеется в виду глобальный, тот...

Работа с хуком по захвату мыши
Здравствуйте! Имеется вот такой вот интересный хук мыши: https://www.cyberforum.ru/post1413269.html При нажатии и отжатии мыши...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru