Где сохранить строку полученную в рез. выполнения инжектированного код

Discussion in 'WASM.BEGINNERS' started by _sheva740, Jul 12, 2007.

  1. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    Пишу функцию:
    Запускаю svchost.exe.
    Вношу код в svchost.exe.
    Выполняю действия и получаю IP DNS - сервера.
    Выполняю ExitThread().

    Вопрос: как передать строку с IP в основную программу?
    (чтобы не через файл, не через реестр).
     
  2. Stub

    Stub New Member

    Blog Posts:
    0
    через маппинг?
     
  3. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    а где адрес map-области из инжектированной процедуры сохранить, чтоб потом его прочитать?
     
  4. Stub

    Stub New Member

    Blog Posts:
    0
    HANDLE CreateFileMapping(
    HANDLE hFile,
    LPSECURITY_ATTRIBUTES lpAttributes,
    DWORD flProtect,
    DWORD dwMaximumSizeHigh,
    DWORD dwMaximumSizeLow,
    LPCTSTR lpName <---- используй имя
    );
     
  5. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    значит
    1. зарезервировать область памяти
    2. заполнить ее строкой
    3. мэпировать эту область с заранее известным именем
    4. ExitThread().
    5. из основной программы обратиться по имени к этой области памяти
    6. унмапить тоже по имени?

    я правильно понял?
     
  6. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    а как в основной программе обратиться по имени ( lpName ) к этой области памяти?
     
  7. n0name

    n0name New Member

    Blog Posts:
    0
    OpenFileMapping
     
  8. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    спасибо за подсказку!
     
  9. Stub

    Stub New Member

    Blog Posts:
    0
    Смотри MSDN и все вопросы отпадут сами собой
     
  10. W4FhLF

    W4FhLF New Member

    Blog Posts:
    0
    Помимо маппинга Атомы or WM_COPYDATA(на низком уровне работает на основе маппинга, но если отправляешь данные оконному приложению, то очень удобно)
     
  11. dimonn

    dimonn New Member

    Blog Posts:
    0
    Code (Text):
    1. ATOM GlobalAddAtom(
    2.     LPCTSTR lpString
    3. );
    Code (Text):
    1. UINT GlobalGetAtomName(
    2.     ATOM nAtom,
    3.     LPTSTR lpBuffer,
    4.     int nSize
    5. );
     
  12. leo

    leo Active Member

    Blog Posts:
    0
    _sheva740
    Наверное лучше наоборот - в основной программе CreateFileMapping, а в инжекте OpenFileMapping

    W4FhLF, dimonn
    Для извлечения строки из атома нужно еще само значение nAtom как-то передать
     
  13. roman_pro

    roman_pro New Member

    Blog Posts:
    0
    Решение через одно место: конвертнуть IP адрес в DWORD и вернуть в качестве кода возврата из потока (ExitThread). В основной проге вызвать GetExitCodeThread и из DWORD'а сделать обратно строку. Минусы очевидны - использование кода возврата не по назначению. Ну и самый главный - грядёт IPv6 где этот трюк уже не получится.
     
  14. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    roman_pro
    дак получилось таки! спасибо!
    Вот примерно так ...
    Code (Text):
    1. ;---------------------------------------------
    2. ; Основная программа
    3. .
    4. .
    5. .
    6. invoke  VirtualProtectEx, hProcess, ...
    7. invoke  WriteProcessMemory, hProcess, ...
    8. invoke  ResumeThread, hThread
    9. invoke    WaitForSingleObject,hThread,...
    10.  
    11. invoke    GetExitCodeThread,hThread, dwModuleBase
    12. lea eax, [dwModuleBase]
    13. int 3
    14. ; тут в EAX - адрес полученного DWORD - а из
    15. ; контекста инжектированного кода.
    16. ; По [EAX] таки лежит - ..aa aa !!!
    17. invoke    CloseHandle,hThread
    18.  
    19. ;---------------------------------------------
    20. ; Кода, который вносится в память svchost.exe
    21. .
    22. .
    23. .
    24. exit:   push    0aaaah
    25.     callx   _ExitThread
    разрешите вопрос еще!?

    как, или чем - "конвертнуть IP адрес в DWORD" ??
     
  15. n0name

    n0name New Member

    Blog Posts:
    0
    inet_addr()

    если вручную, то это тоже не так сложно.
     
  16. Mental_Mirror

    Mental_Mirror New Member

    Blog Posts:
    0
    inet_addr
     
  17. Mental_Mirror

    Mental_Mirror New Member

    Blog Posts:
    0
    n0name
    =) опоздал
     
  18. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    n0name
    Mental_Mirror
    та да! спасибо!