CreateFileMapping вопрос

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

  1. BenQQQ

    BenQQQ New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    44
    Необходимо открыть PE файл. Ищу наиболее удобный для работы способ.
    Пробовал такую связку CreateFile, CreateFileMapping с флагом SEC_IMAGE, MapViewOfFile
    После изменения аттрибутов доступа к страницам памяти в которую спроецирован файл на PAGE_READWRITE я записываю и читаю данные из файла через его проекцию. Но потом после вызова UnmapViewOfFile и CloseHandle изменения не сохраняются на диск... Похоже дело из за флага SEC_IMAGE. Как поступить?
    З.Ы. можно конечно вручную настроить образ, выполнив работу аналогичную CreateFileMapping... но зачем делать то что уже сделано.
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Можно воспользоваться функцией
    Код (Text):
    1. BOOL WINAPI FlushViewOfFile(
    2.   __in          LPCVOID lpBaseAddress,
    3.   __in          SIZE_T dwNumberOfBytesToFlush
    4. );
    Если вторым параметром передать 0, то весь образ скинется на диск.
    Зы. Думаю это с SEC_COMMIT будет работать.
     
  3. BenQQQ

    BenQQQ New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    44
    twgt, не пашет уже пробовал. Изменения упорно не хотят применяться к файлу, хотя в памяти эти значения меняются без проблем. Похоже что дело все-таки в флаге.
    А SEC_COMMIT флаг в купе с SEC_IMAGE НЕ пашет... GetLastError=87
     
  4. BenQQQ

    BenQQQ New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    44
    И вообще вот цитата из MSDN:
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Я вроде и не предлогал эти флаги совмещать :)

    У файла не стоит аттрибут "только на чтение"?!
    Показывай код от CreateFile до UnmapViewOfFile.
     
  6. BenQQQ

    BenQQQ New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    44
    Не стал морочить себе голову, файл открываю без флага SEC_IMAGE, Все RVA конверчу в RAW и все норм пашет и образ сохраняется.