Скачиваний:
26
Добавлен:
01.05.2014
Размер:
48.13 Кб
Скачать

Лабораторная работа 6. Проецирование (отображение) файлов в память

Цель работы. Разработать консольное приложение для исследования файлов, отображаемых в память

6.1.Возможности программы:

  • создание объекта «проецируемый файл» для произвольно задаваемого файла

  • проецирование данных файла на адресное пространство процесса

  • проверка типа файла (является ли он исполняемым файлом Win32 – PE-файлом)

  • отмена проецирования

  • закрытие объекта «проецируемый файл»

6.2.Используемые функции Win32 API:

Таблица вариантов

Примечание. Значения атрибутов защиты:

А1 - PAGE_READONLY

А2 - PAGE_READWRITE

А3 - PAGE_WRITECOPY

В1 - FILE_MAP_WRITE

В2 - FILE_MAP_READ

В3 - FILE_MAP_ALL_ACCESS

В4 - FILE_MAP_COPY

Вар.01

Вар.02

Вар.03

Вар.04

Вар.05

Вар.06

Вар.07

Вар.08

Вар.09

Вар.10

CreateFileMapping

(Атрибут защиты)

*

A1

*

A2

*

A3

*

A1

*

A2

*

A3

*

A1

*

A2

*

A3

*

A1

MapViewOfFile

(Атрибут защиты)

*

В2

*

В1

*

В4

*

В2

*

В2

*

В4

*

В2

*

В3

*

В4

*

В2

UnmapViewOfFile

*

*

*

*

*

*

*

*

*

*

CloseHandle

*

*

*

*

*

*

*

*

*

*

Вар.11

Вар.12

Вар.13

Вар.14

Вар.15

Вар.16

Вар.17

Вар.18

Вар.19

Вар.20

CreateFileMapping

(Атрибут защиты)

*

A2

*

A3

*

A1

*

A2

*

A3

*

A1

*

A2

*

A3

*

A1

*

A2

MapViewOfFile

(Атрибут защиты)

*

В1

*

В4

*

В2

*

В2

*

В4

*

В2

*

В3

*

В4

*

В2

*

В1

UnmapViewOfFile

*

*

*

*

*

*

*

*

*

*

CloseHandle

*

*

*

*

*

*

*

*

*

*

Приложение 6. Функции и структуры для отображения файлов в память

HANDLE CreateFileMapping( // Создание объекта «отображаемый файл» [out]

HANDLE hFile, // handle to file – хэндл файла [in]

LPSECURITY_ATTRIBUTES lpAttributes, // security – атрибуты безопасности [in]

DWORD flProtect, // protection – защита [in]

DWORD dwMaximumSizeHigh, // high-order DWORD of size – максимальный размер (ст.разр.) [in]

DWORD dwMaximumSizeLow, // low-order DWORD of size – максимальный размер (мл.разр.) [in]

LPCTSTR lpName // object name – имя объекта [in]

);

HANDLE OpenFileMapping( // Открытие именованного объекта «отображаемый файл» [out]

DWORD dwDesiredAccess, // access mode – режим доступа [in]

BOOL bInheritHandle, // inherit flag – флаги наследования [in]

LPCTSTR lpName // object name – имя объекта [in]

);

LPVOID MapViewOfFile( // Отображение данных файла

HANDLE hFileMappingObject, // handle to file-mapping object – хэндл объекта [in]

DWORD dwDesiredAccess, // access mode – режим доступа [in]

DWORD dwFileOffsetHigh, // high-order DWORD of offset – смещение (ст.разр.) [in]

DWORD dwFileOffsetLow, // low-order DWORD of offset – смещение (мл.разр.) [in]

SIZE_T dwNumberOfBytesToMap // number of bytes to map – число отображаемых байтов [in]

);

LPVOID MapViewOfFileEx( // Отображение данных файла

HANDLE hFileMappingObject, // handle to file-mapping object – хэндл объекта [in]

DWORD dwDesiredAccess, // access mode – режим доступа [in]

DWORD dwFileOffsetHigh, // high-order DWORD of offset – смещение (ст.разр.) [in]

DWORD dwFileOffsetLow, // low-order DWORD of offset – смещение (мл.разр.) [in]

SIZE_T dwNumberOfBytesToMap, // number of bytes to map – число отображаемых байтов [in]

LPVOID lpBaseAddress // starting address – базовый адрес [in]

);

BOOL UnmapViewOfFile( // Отмена отображения данных файла

LPCVOID lpBaseAddress // starting address – стартовый адрес [in]

);

BOOL CloseHandle( // Уничтожение хэндла объекта

HANDLE hObject // Object handle – хэндл объекта [in]

);

Соседние файлы в папке Задания на лабы для ВТ