Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 20:34   #1
drayvhard
 
Регистрация: 13.07.2012
Сообщений: 7
По умолчанию Перехват вызова функции с DLL

Здравствуйте! Я знаю, что эта тема очень много раз рассматривалась. Но подскажите, пожалуйста, как решить эту проблему:
У меня есть программа (test.exe), она использует функцию (void func()), которая лежит в DLL (lib.dll) - я это узнал через диззасембл в IDA Pro.
Так вот, как можно перехватить вызов этой функции? То есть когда программа вызывает эту функцию?
Библиотека лежит в том самом каталоге, что и программа.
библиотека подгружается в программу динамически.

Я пробовал это реализовать через DLL inject + CAPIHook, но не выходит.
Вот собственно код:

Код:
void WINAPI hTest();
CAPIHook g_Test("D:\\test\\library.dll", "func", (PROC)hTest);

void WINAPI hTest()
{
  MessageBoxA(NULL,"Catched","Ok",64);
}
Помогите, пожалуйста! Заранее благодарен
drayvhard вне форума Ответить с цитированием
Старый 01.12.2012, 06:44   #2
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию

Может нужно найти адрес вызываемой функции в библиотеке, и потом использовать? Честно говоря пока что не знаком с перехватом функций, но помойму если знаешь адрес то можно определить её параметры и использовать по своему назначению.
hvz- вне форума Ответить с цитированием
Старый 01.12.2012, 09:05   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Заменить DLL на свой собственный, который будет грузить и вызывать настоящий.
waleri вне форума Ответить с цитированием
Старый 01.12.2012, 20:58   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Делаешь CreateRomoteThread, открываешь секцию импорта и меняешь адрес метода на свой.

В случае с динамическим импортом надо уже GetProcAddress хукать, способ описан выше.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись функции в файл для ее последующего вызова wol4aravio C# (си шарп) 0 24.05.2012 22:55
Переходит на главную страницу вместо вызова функции Krasi JavaScript, Ajax 3 27.08.2011 17:04
Написание функции вызова компилятора. Яр|/||< (^_^) Общие вопросы Delphi 0 17.04.2010 21:19
Внедрение DLL и перехват API-функций Doom_Rooster Win Api 4 01.04.2010 03:37
блокировка вызова 2-го экземпляра формы из dll Roof Общие вопросы Delphi 6 27.08.2008 01:03