Изменить тип памяти в удаленном процессе

Тема в разделе "WASM.WIN32", создана пользователем karabas_barabas, 9 сен 2010.

  1. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    Создается процесс в CREATE_SUSPENDED , я хочу записать по определенному адресу данного процесса данные через (Virtualprotect)NtWriteVirtualMemory , но действие обламывается так как тип памяти по этому адрессу там может быть MAP или PRIVATE - не всегда IMAGE, возможно ли в данном случае как-то решить эту проблему или нет, то есть каким-то образом изменить тип памяти на нужный для возможности использовать VirtualAllocEx/WriteProcessMemory и т.д. ?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    karabas_barabas
    Можно сохранить данные, освободить регион, выделить с необходимыми атрибутами и типом и записать в него сохранённые данные. Но для проекций такое очень опасно, так как память разделяемая часто.
     
  3. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    Clerk
    беру все риски на себя
    что имеется ввиду VirtualFree или ZwUnmapviewOfSection ?
    пробую делать ZwUnmapviewOfSection возвращает 0xC0000019 NT_STATUS_NOT_MAPPED_VIEW "Attempt to access invalid address."
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    karabas_barabas
    Память приватная, а не проекция. Такой атрибуты можно изменять из R на R/W через NtProtectVirtualMemory.
    NtUnmapViewOfSection. Разумеется вначале нужно определить тип памяти и атрибуты её.