|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 17, 2004 20:06:15 Дарово. Я перехватываю функцию send в чужом процессе через изменение таблицы импорта. Свою DLL внедряю через хуки. При этом функция WSAStartup в чужом процессе начала выдавать ошибку 10091 (WSASYSNOTREADY). Так должно быть? Если да то почему это происходит и что мне сделать чтобы это исправить? Может саму WSAStartup перехватить, а дальше? А может у меня просто перехват кривой, хотя другие функции (не из WS2_32.dll) перехватываются без проблем. |
|
|
Дата: Июн 18, 2004 03:18:03 Мне кажется WSAStartup каким-то образом проверяет, чтобы все адреса Winsock-функций указывали на WS2_32.dll. Зачем это ему надо я пока не догоняю. Сейчас попробую перехватить WSAStartup и при её вызове восстанавливать таблицу, а после вызова менять обратно. Люди добрые (и умные) помогите мне пожалуйста. |
|
|
Дата: Июн 18, 2004 06:06:11 · Поправил: q_q Max Kuk WSAStartup каким-то образом проверяет из ws2_32.dll (w2ksp4)
DllMain:
74FC1C85 push ebp
74FC1C86 mov ebp, esp
74FC1C88 push FFFFFFFF
74FC1C8A push 74FC1CE0 ; ->------------------------------------->-
74FC1C8F push 74FCE1D5 ; |
74FC1C94 mov eax,dword ptr fs:[00000000] ; |
74FC1C9A push eax ; |
74FC1C9B mov dword ptr fs:[00000000],esp ; |
74FC1CA2 push ecx ; |
74FC1CA3 push ecx ; |
74FC1CA4 sub esp, 00000038 ; |
74FC1CA7 push ebx ; |
74FC1CA8 push esi ; |
74FC1CA9 push edi ; |
74FC1CAA mov dword ptr [ebp-18], esp ; |
74FC1CAD mov eax, dword ptr [ebp+0C] ; fdwReason |
74FC1CB0 xor ebx, ebx ; |
74FC1CB2 sub eax, ebx ; |
74FC1CB4 je 74FC63FE ; fdwReason == DLL_PROCESS_DETACH --->- |
74FC1CBA dec eax ; | |
74FC1CBB je 74FC635A ; fdwReason == DLL_PROCESS_ATTACH ->- | |
... ; | | |
74FC1CE0 BYTE 4 DUP(0ffh) ; <---------------------------------)-)----
74FC1CE4 DWORD 74FC63D0 ; | |
74FC1CE8 DWORD 74FC63D4 ; ----------------------------------)-)-->-
... ; | | |
74FC635A mov eax, dword ptr [ebp+08] ; hinstDLL <------------------------- | |
74FC635D mov dword ptr [74FD182C], eax ; save hinstDLL | |
... ; | |
74FC63D3 ret ; DllMain exit | |
... ; | |
74FC63D4 mov esp, dword ptr [ebp-18] ; <-----------------------------------)----
74FC63D7 or dword ptr [ebp-04], FFFFFFFF ; |
74FC63DB xor ebx, ebx ; |
74FC63DD cmp byte ptr [ebp-44], bl ; |
74FC63E0 je 74FC63E7 ; |
74FC63E2 call 74FC5640 ; |
74FC63E7 cmp byte ptr [ebp-40], bl ; |
74FC63EA je 74FC63F1 ; |
74FC63EC call 74FCD7E9 ; |
74FC63F1 mov dword ptr [74FD182C], ebx ; *** clear *** |
74FC63F7 xor eax, eax ; |
74FC63F9 jmp 74FC1CC8 ; DllMain exit |
; |
74FC63FE cmp dword ptr [74FD182C], ebx ; <------------------------------------
74FC6404 je 74FC1CC5
74FC640A cmp dword ptr [ebp+10], ebx
74FC640D jne 74FC646B ; lpvReserved != NULL -> process terminate
74FC640F ... ; lpvReserved == NULL -> FreeLibrary
74FC647A mov dword ptr [74FD182C], ebx ; *** clear ***
74FC6480 jmp 74FC1CC5 ; DllMain exit
...
Exported fn(): WSAStartup - Ord:0073h
74FCD7F5 push ebp
74FCD7F6 mov ebp, esp
74FCD7F8 push FFFFFFFF
74FCD7FA push 74FC4360
74FCD7FF push 74FCE1D5
74FCD804 mov eax, dword ptr fs:[00000000]
74FCD80A push eax
74FCD80B mov dword ptr fs:[00000000], esp
74FCD812 push ecx
74FCD813 push ecx
74FCD814 sub esp, 00000034
74FCD817 push ebx
74FCD818 push esi
74FCD819 push edi
74FCD81A mov dword ptr [ebp-18], esp
74FCD81D xor ebx, ebx
74FCD81F mov dword ptr [ebp-24], ebx
74FCD822 xor edx, edx
74FCD824 cmp dword ptr [74FD182C], ebx
74FCD82A jne 74FCD836 ; hinstDLL != NULL
74FCD82C mov eax, 0000276B ; WSASYSNOTREADY
74FCD831 jmp 74FCD9FC ; WSAStartup exit
... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.112 |