Перехват WinAPI функции MessageBox

Тема в разделе "WASM.WIN32", создана пользователем __ARTEM__, 10 сен 2006.

  1. __ARTEM__

    __ARTEM__ New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2006
    Сообщения:
    5
    Хочу поставить хук на вызов вункции MessageBoxA(W), не только в своём приложении, а во всех. Тоесть когда будет вызываться функция например в блокноте, то в моей проге выводилось в консоль инфа которая говорит что произошел вызов MessageBoxA(W).
     
  2. d4rkeagle

    d4rkeagle Алексей Шпунсель

    Публикаций:
    0
    Регистрация:
    3 мар 2006
    Сообщения:
    66
    Адрес:
    Тайланд
    wasm.ru тебе в помощь, сынок!
     
  3. Klajnor_666

    Klajnor_666 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    22
    Адрес:
    Russia
  4. __ARTEM__

    __ARTEM__ New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2006
    Сообщения:
    5
    Да я читал эти статьи, но там там на паскале:-( мож кто - нить подкинет статьи на сях!
     
  5. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    А что есть принципиальная разница ? Перевести эти сурсы на С - 15 мин.
    ЗЫ. Может топик надо было назвать "дайте мне исходники готовой программы" ?
     
  6. __ARTEM__

    __ARTEM__ New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2006
    Сообщения:
    5
    Да я одного понять не могу почему когда я вызываю функцию SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)MsgProc, 0, GetCurrentThreadId());, с параметром GetCurrentThreadId(), она вылавливает месседжбоксы только из того потока в котором обьявлена, а если я ставлю последний параметр 0 она должна же отслеживать все потоки, так ведь? А не ловит!
     
  7. tmp_name_0001

    tmp_name_0001 New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    85
    SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)&MessageProc,(HINSTANCE)hHandle,0);

    hHandle это хэндл модуля
     
  8. __ARTEM__

    __ARTEM__ New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2006
    Сообщения:
    5
    А если у меня нет модуля, эта функция в том модуле где и SetWindowsHookEx(...), знач NULL должно быть, так?
     
  9. tmp_name_0001

    tmp_name_0001 New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    85
    нет не так ... у тебя же последний параметр 0 ... нужен хэндл твоей длл-ки получай его GetModuleHandle или
    возьми его хотябы в твоей стартовой функции

    к примеру она такая

    Код (Text):
    1.  
    2. BOOLEAN
    3. WINAPI
    4. DllMain(
    5.     IN HINSTANCE hDllHandle,
    6.     IN DWORD     nReason,    
    7.     IN LPVOID    Reserved    
    8. )
    вот этот хэндл и ложи в SetWindowsHookEx
     
  10. __ARTEM__

    __ARTEM__ New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2006
    Сообщения:
    5
    Огромное спасибо всем за то что просветили! Кстате всех с Днем Программера :derisive:
     
  11. DJK

    DJK Member

    Публикаций:
    0
    Регистрация:
    8 авг 2006
    Сообщения:
    39
    Попробуй эти исходники, правда иногда DLL не выгружается, а так работают.
     
  12. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Может кто-нибудь внятно объяснить или дать ссылку на статью, как, в конце концов перехватить API без идиотских jmp в начале функции и извращений с импортом, а вполне стандартным SetWindowsHookEx?
    Всё, что есть в статье на wasm'e "От зеленого к красному: Глава 3: Программирование в Shell-код стиле. Важные техники системного программирования: SEH, VEH и API Hooking" - << Чтобы глобально перехватывать функции можно использовать функцию SetWindowsHook. Тогда мы будет перехватывать нужную функцию во всех текущих GUI-приложениях, а также новых, т.к. если мы вызываем функцию SetWindowsHook, то она внедряет DLL и для всех новых процессов.>> Всё.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Могу ебе сразу ответить - никак.
    SetWindowsHookEx не предназначен для перехвата API, хотя его зачастую используют как средство загрузки DLL в адресное пространство целевого процесса.