Здравствуйте.
Подскажите как справиться с задачей:
Нужно перехватить API-вызов к заданной экспортной функции в заданном процессе при определенных аргументах вызова.
приведу пример.
скажем есть программа test.exe и библиотека test.dll
в которой есть экспортная функция
int testfunction ( int arg);
и скажем если передаваемый аргумент arg равен 2, то заменить testfunction на свой вариант,
а если arg равен 3, то не перехватывать и пропустить его
Локальный перехват API-вызовов в Win32
-
- Разработчик
- Сообщения: 302
- Зарегистрирован: 17.03.2008
- Откуда: такие как я?
- Поблагодарили: 2 раза
- Контактная информация:
Эммм... памойму можно так
DWORD newadrfunct = testfunction;
патом хукаеш testfunction например на hook(int arg)
ну и патом
DWORD newadrfunct = testfunction;
патом хукаеш testfunction например на hook(int arg)
ну и патом
Код: Выделить всё
function hook(int arg) {
if (arg == 2) {
// svoi variant
} else if (arg == 3) {
newadrfunct(arg);
}
}
- x_000
- Полковник
- Сообщения: 4889
- Зарегистрирован: 25.02.2008
- Откуда: Deutsches Reich
- Благодарил (а): 6 раз
- Поблагодарили: 18 раз
вернее всего переписывать таблицы экспорта\импорта, однако, это сложно и у меня почему-то не работает, на месте пешного хедера находится ноаксесс страницы
а так да, ставишь в начале функции джамп на хук и все
а так да, ставишь в начале функции джамп на хук и все