Лабораторная работа №6 / LR_6
.DOCЛабораторная работа 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]
);