перехват вызовов функций для определенного процесса

Тема в разделе "WASM.BEGINNERS", создана пользователем Chikanok, 20 май 2008.

  1. Chikanok

    Chikanok New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2007
    Сообщения:
    57
    Здравствуйте.
    Подскажите как можно это организовать?
    Например,подход ms-rem`а,через dll-инекцию с заменой адрессов функций,но как узнать какой процесс?
     
  2. blood_raven

    blood_raven New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    55
    ты сформулируй задачу нормально, а то нифига не понятно что ты хочешь сделать.
     
  3. Chikanok

    Chikanok New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2007
    Сообщения:
    57
    Вообщем мне надо перехватывать данные передаваемые процессом "Process.exe" через winsock2 (send, SendTo,WSASend,WSASendTo).
     
  4. blood_raven

    blood_raven New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    55
    ну и в чем проблема? пишешь длл'ку для перехвата этих функций, а потом внедряешь ее только в process.exe и усе.
     
  5. Chikanok

    Chikanok New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2007
    Сообщения:
    57
    А как узнать какой процесс загрузил dll`ку?
    Я использую Adware_box от ms-rem`а для примера.
     
  6. blood_raven

    blood_raven New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    55
    ну тык яж сказал грузи длл только в конкретный процесс, внимательно читай доки рема, http://wasm.ru/article.php?article=apihook_2
     
  7. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Chikanok

    .data
    szProcName db 'process',0
    ...
    invoke GetModuleHandle,0
    push eax
    invoke GetModuleHandle,addr szProcName
    pop ecx
    cmp eax,ecx
    jne exit

    ; мы в нужном процессе

    exit:
     
  8. Chikanok

    Chikanok New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2007
    Сообщения:
    57
    Перенес исходник ms-rem`а на С++.
    Внедряется во все процессы,переписывает адресса,но при вызове подменненой функции процесс падает.
    В чем может быть косяк,может какой модификатор приписать?
    Вот как я описал свою функцию:
    Код (Text):
    1. int MyMessageBoxExW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption,UINT uType,WORD wLanguageId)
     
  9. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    отладчик в руки, тут нет экстрасенсов, Это тебе не ТНТ
     
  10. Chikanok

    Chikanok New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2007
    Сообщения:
    57
    Ошибка вот такая:
    Код (Text):
    1. Unhandled exception at 0x77d7055e in taskmgr.exe: 0xC0000005: Access violation reading location 0x00000000.
    Вот код подмены адресов:
    Код (Text):
    1. void SetHook()
    2. {
    3.     HMODULE hMod=GetModuleHandle(L"user32.dll");
    4.     Ma=GetProcAddress(hMod,"MessageBoxExW");
    5.     Mw=GetProcAddress(hMod,"MessageBoxExA");
    6.     DWORD Bytes;
    7.     BOOL r;
    8.     ReadProcessMemory(INVALID_HANDLE_VALUE,Mw,&OldMw,sizeof(OldCode),&Bytes);
    9.     ReadProcessMemory(INVALID_HANDLE_VALUE,Ma,&OldMa,sizeof(OldCode),&Bytes);
    10.     JmpMw.PushOp=0x68;
    11.     JmpMw.PushAdr=&MyMessageBoxExW;
    12.     JmpMw.RetOp=0xC3;
    13.     JmpMa.PushOp=0x68;
    14.     JmpMa.PushAdr=&MyMessageBoxExA;
    15.     JmpMa.RetOp=0xC3;
    16.     WriteProcessMemory(INVALID_HANDLE_VALUE,Mw,&JmpMw,sizeof(far_jmp),&Bytes);
    17.     WriteProcessMemory(INVALID_HANDLE_VALUE,Ma,&JmpMa,sizeof(far_jmp),&Bytes);
    18. }
    Вот описание структур:
    Код (Text):
    1. typedef struct
    2. {
    3.     DWORD One;
    4.     WORD Two;
    5. } OldCode;
    6.  
    7. typedef struct
    8. {
    9.     BYTE PushOp;
    10.     LPVOID PushAdr;
    11.     BYTE RetOp;
    12. } far_jmp;
     
  11. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Не до конца понял вопрос. Но тут в факе есть пост от володи про 'detours'. Искать по этому самому слову.