Обработка окна Internet Explorer`a

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

  1. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    У меня проблема. Надо написать что-то типа трояна, который будет при установки соединения с инетом искать определённые окна IE и при нажатии на кнопку или ссылку в этих окнах считывать все контроллы с окна (чекбоксы, эдиты и т.д.) и отправлять их мне на мыло. Все бы хорошо, тока не могу отловить события IE. Ставил гловальный хук на WH_GETWNDPROC, WH_MOUSE_ WH_CBT и т.д., но он не видит событий самого окошка, видит тока нажатие меню, кнопок навигации, короче всего, чего не надо. Может кто подскажет где копать или может сорцы есть?
     
  2. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Может я не по тому хэндлу смотрю. Я делал так: хук у меня в длл, при запуске проги ставит хук, ищет окно по классу "IEFrame", далее, если в нём есть подкласс "Internet Explorer_Server", то записывает его хэндл в себе буфер и отправляет через MailSlot моему хуку. Тот уже обрабатывает сообщения всякие, получив этот буфер, сверяет хэндл отправителя... короче вот текст:
    Код (Text):
    1. .const
    2. WM_GETMSGHOOK   equ WM_USER+666
    3.  
    4. .data
    5. hInstance   dd 0
    6. MSName      db "\\.\mailslot\IEPluginmsg",0
    7.  
    8. .data?
    9. hHook       dd ?
    10. hWnd        dd ?
    11. hSlot       dd ?
    12. hBuff       dd 25 dup(?)
    13. BuffSize    db ?
    14. RWSize      dd ?
    15.  
    16. .code
    17. DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
    18. .if reason==DLL_PROCESS_ATTACH
    19.     push    hInst
    20.     pop hInstance
    21. .endif
    22.     mov eax,TRUE
    23.     ret
    24. DllEntry Endp
    25.  
    26. GetMsgProc proc EXPORT nCode:DWORD,wParam:DWORD,lParam:DWORD
    27.     invoke  CallNextHookEx,hHook,nCode,wParam,lParam    ; след. обработчик
    28.     mov eax,nCode
    29.     cmp eax,HC_ACTION
    30.     jnz Exit
    31.     invoke  ReadFile, hSlot, offset hBuff,\         ; читаем сообщение из MailSlot`a
    32.         101,offset RWSize, NULL
    33.  
    34.     movzx   ecx, byte ptr [BuffSize]            ; ecx = размер буфера с окнами
    35.     jecxz   Exit
    36.  
    37.     mov edx,lParam                  ; edx = указатель на MSG
    38.     assume  edx:PTR MSG            
    39.     mov eax, [edx].hwnd                 ; eax = хэндл окна, кот. послало сообщение
    40. loo:    cmp eax, dword ptr [hBuff+ecx*4-4]
    41.     jz  Found
    42.     loopz   loo
    43.     jmp Exit
    44.  
    45. Found:  mov eax,[edx].message
    46.     cmp eax,WM_COMMAND
    47.     jnz Exit
    48.     mov eax, [edx].wParam
    49.     shr eax,16
    50.     cmp ax,BN_CLICKED
    51.     jnz Exit
    52.     invoke  PostMessage,hWnd,WM_GETMSGHOOK,[edx].hwnd,0
    53.  
    54. Exit:   assume  edx:nothing
    55.     xor eax,eax
    56.     ret
    57. GetMsgProc endp
    58.  
    59. InstallHook proc EXPORT hwnd:DWORD
    60.     push    hwnd                        ; окно, которому посылать месаги
    61.     pop hWnd
    62.  
    63.     invoke  CreateMailslotA, offset MSName,0,0,0        ; cjplftv MailSlot
    64.     cmp eax,-1
    65.     jz  Error
    66.     mov hSlot,eax
    67.     invoke  SetWindowsHookEx,WH_GETMESSAGE,offset GetMsgProc,hInstance,NULL
    68.     mov hHook,eax                   ; хэндл хука сохранили
    69. Error:  ret
    70. InstallHook endp
    71.  
    72. UninstallHook proc EXPORT
    73.     invoke  CloseHandle, hSlot
    74.     invoke  UnhookWindowsHookEx,hHook           ; удаляем хук
    75.     ret
    76. UninstallHook endp
    77.  
    78. End DllEntry
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Чекбоксы и эдиты в окне эксплорера - это не стандартные виндовые контролы. Это даже не окна. Зато их легко можно опрашивать через COM. Можете проверить написав простенький JavaScript.
     
  4. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Я не любитель ООП, и что такое СОМ я знаю тока из лекций =) А можно как-нить на масме это сделать ИМХО очень надо.

    Может ссылки какие или работа с СОМ на масме?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Статьи на этом сайте есть.
     
  6. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Статьи, конечно есть, я их перечитал... Но там о том как создавать объекты, использовать уже готовые виндовые. Многое стало понятно. Но как именно обрабатывать internet explorer_server??? Слышал есть такой класс: Explorer или InternetExplorer. Как можно заменить его обработчики на свои и потом вернуть управление обратно (т.е. перейти на нужный урл)? Я чет зашел в тупик с этими СОМ...
     
  7. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    Трояны данной направленности называются формграберы.

    Без COM здесь явно не обойтись, потому:

    1. поиск по форуму

    2. google

    3. rsdn

    (что мешает написать все это дело на С++, а потом перевести в asm? :))
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Все необходимые объекты браузера, точнее их классы, описаны в MSDN. И примеры использования этих объектов в мирных целях можно найти через гугл.
     
  9. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Stub - это не вариант, насчет с++, надо во всем разобраться на низком уровне.
    To All: ну, если нет примерчиков, придется самому копаться... Спасибо за помощь!
     
  10. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia


    Хм, а почему бы и нет?! Если есть сложности на низком уровне, то почему бы не обойти их на более высоком? Вот тут С++ нам и в помощь, тем более что при использовании "чудо-ключа" /Fa(s) жизнь становится легче :).

    Кстати примерчики есть: проскакивали на форуме, кучкой лежат в сети (например не оч давно проскакивал вариант от Coban2k).
     
  11. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Кстати, МИСТЕР КОБАН 2000 ЕЩЕ ТОТ ЖЛОБ!!!

    Хотел впарить мне сорцы на МАСМ32 за 500wmz =(((
     
  12. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    хм, а разве долго слить его пример к статье на С++ и перевести в MASM? Экономия 500$ одним ключем к компилятору :) - /Fa Вам в помощь.