Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Имеется пример на PureBasic, который добавляет в PE файл новую секцию с данными ".test".
Вся запара в том что в PureBasic'e можно вызвать такую конструкцию:
или такую
Где *ID - Означает указатель на структуру
Как это можно сделать на AutoIt? Хотелось бы написать UDF для работы с PE файлами, но опыта так мало что можно сказать вообще нету, но PEConstants.au3 уже написал, осталось дело за малым, написать саму UDF ;D
PEConstants.au3
Код:
#DOS_SIGNATURE = $5A4D
#NT_SIGNATURE = $4550
Structure IMAGE_SECTION_HEADER
SecName.s{8}
StructureUnion
PhysicalAddr.l
VirtualSize.l
EndStructureUnion
VirtualAddress.l
SizeOfRawData.l
PointerToRawData.l
PointerToRelocations.l
PointerToLinenumbers.l
NumberOfRelocations.w
NumberOfLinenumbers.w
Characteristics.l
EndStructure
Structure IMAGE_SECTION_HEADERS
ish.IMAGE_SECTION_HEADER[64]
EndStructure
NewSectSize.l = $1000 ; размер добавляемой секции
*DOS_HEADER.IMAGE_DOS_HEADER
*NT_HEADERS.IMAGE_NT_HEADERS
*SECTION_HEADERS.IMAGE_SECTION_HEADERS
*NewSecEntry.IMAGE_SECTION_HEADER
Buf.l
BytesRead.l
file.s = OpenFileRequester("Open PE file", "", "PEfiles|*.exe;*.dll|All files|*.*", 0)
If file
If OpenFile(0, file)
FileSize.l = FileSize(file)
FileSize = FileSize & $fffff000 + NewSectSize
BufAdr = AllocateMemory(FileSize + NewSectSize)
If ReadFile(0, file)
ReadData(0, BufAdr, FileSize)
CloseFile(0)
; Инициируем структуры
*DOS_HEADER = BufAdr
*NT_HEADERS = BufAdr + *DOS_HEADER\e_lfanew
*SECTION_HEADERS = *NT_HEADERS\OptionalHeader + *NT_HEADERS\FileHeader\SizeOfOptionalHeader
If *DOS_HEADER\e_magic = #DOS_SIGNATURE And *NT_HEADERS\Signature = #NT_SIGNATURE ; Если это PE файл
; Поиск максимального RVA
MaxRVA.l = *SECTION_HEADERS\ish[0]\VirtualAddress
MaxRVAIndex.l = 0
For i = 1 To *NT_HEADERS\FileHeader\NumberOfSections - 1
If *SECTION_HEADERS\ish[i]\VirtualAddress > MaxRVA
MaxRVA = *SECTION_HEADERS\ish[i]\VirtualAddress
MaxRVAIndex = i
EndIf
Next i
*NewSecEntry = *SECTION_HEADERS\ish[*NT_HEADERS\FileHeader\NumberOfSections]
FillMemory(*NewSecEntry, SizeOf(IMAGE_SECTION_HEADER), 0, #PB_Byte)
*NewSecEntry\SecName = ".test"
*NewSecEntry\VirtualSize = NewSectSize
*NewSecEntry\SizeOfRawData = NewSectSize
*NewSecEntry\Characteristics = $60000020
; Выравниваем *******************************************************
If (MaxRVA + *SECTION_HEADERS\ish[MaxRVAIndex]\VirtualSize) & $00000fff > 0
*NewSecEntry\VirtualAddress = (MaxRVA + *SECTION_HEADERS\ish[MaxRVAIndex]\VirtualSize) & $fffff000 + *NT_HEADERS\OptionalHeader\SectionAlignment
Else
*NewSecEntry\VirtualAddress = MaxRVA + *SECTION_HEADERS\ish[MaxRVAIndex]\VirtualSize
EndIf
If NewSectSize & $00000fff > 0
*NT_HEADERS\OptionalHeader\SizeOfImage = (*NewSecEntry\VirtualAddress + NewSectSize) & $fffff000 + *NT_HEADERS\OptionalHeader\SectionAlignment
Else
*NT_HEADERS\OptionalHeader\SizeOfImage = *NewSecEntry\VirtualAddress + NewSectSize
EndIf
;**********************************************************************
*NewSecEntry\PointerToRawData = *SECTION_HEADERS\ish[*NT_HEADERS\FileHeader\NumberOfSections-1]\PointerToRawData + *SECTION_HEADERS\ish[*NT_HEADERS\FileHeader\NumberOfSections-1]\SizeOfRawData
*NT_HEADERS\FileHeader\NumberOfSections + 1 ; Добавляем число секций
; меняем EP
OldEP = *NT_HEADERS\OptionalHeader\AddressOfEntryPoint ; запоминаем старую EP
*NT_HEADERS\OptionalHeader\AddressOfEntryPoint = *NewSecEntry\VirtualAddress
; Затираем bound import если он есть
If *NT_HEADERS\OptionalHeader\DataDirectory[#IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]\VirtualAddress <> 0
*NT_HEADERS\OptionalHeader\DataDirectory[#IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]\VirtualAddress = 0
*NT_HEADERS\OptionalHeader\DataDirectory[#IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]\Size = 0
EndIf
; Запись измененного файла
If CreateFile(0, file + ".exe")
FileSeek(0, 0)
WriteData(0, BufAdr, *NewSecEntry\PointerToRawData + *NewSecEntry\SizeOfRawData)
; Устанавливаем пойнтер на офсет начала новой секции и записываем нужные инструкции
FileSeek(0, *SECTION_HEADERS\ish[MaxRVAIndex + 1]\PointerToRawData)
For i = 0 To 100
WriteByte(0, Val(Hex(i)))
Next i
WriteByte(0, $68) ; Прыгаем на родную EP
WriteLong(0, OldEP + *NT_HEADERS\OptionalHeader\ImageBase)
WriteByte(0, $0C3)
CloseFile(0)
EndIf
FreeMemory(BufAdr)
Else
MessageRequester("Ахтунг", "No valid PE File", #MB_OK|#MB_ICONWARNING)
EndIf
EndIf
Else
MessageRequester("Ахтунг", "Can't open file" + Chr(10) + "Possible file is occupied other program.", #MB_OK|#MB_ICONWARNING)
EndIf
EndIf
Вся запара в том что в PureBasic'e можно вызвать такую конструкцию:
Код:
*SECTION_HEADERS\ish[i]\VirtualAddress
или такую
Код:
*NT_HEADERS\OptionalHeader\DataDirectory[#IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]\VirtualAddress = 0
Где *ID - Означает указатель на структуру
Как это можно сделать на AutoIt? Хотелось бы написать UDF для работы с PE файлами, но опыта так мало что можно сказать вообще нету, но PEConstants.au3 уже написал, осталось дело за малым, написать саму UDF ;D
PEConstants.au3
Код:
#Region Header
#cs
Title: PE Constants UDF Library for AutoIt3
Filename: PEConstants.au3
Description: Constants that can be used with PE UDF library
Version: 3.7 / 3.3.6.1
Requirements: AutoIt v3.3 +, Developed/Tested on Windows XP Pro Service Pack 3
Uses: -
Note: -
#ce
#EndRegion Header
#cs
Структура PE файла
+------------------------------------+
| MS DOS Header |
|------------------------------------|
| MS DOS Real-Mode Stub Programm |
|------------------------------------|
| PE File Signature |
|------------------------------------|
| PE File Header |
|------------------------------------|
| PE File Optional Header |
|------------------------------------|
| .text Section Header |
|------------------------------------|
| .bss Section Header |
|------------------------------------|
| .rdata Section Header |
|------------------------------------|
| . |
| . |
| . |
|------------------------------------|
| .debug Section Header |
|------------------------------------|
| .text Section |
|------------------------------------|
| .bss Section |
|------------------------------------|
| .rdata Section |
|------------------------------------|
| . |
| . |
| . |
|------------------------------------|
| .debug Section |
+------------------------------------+
#ce
#Region Executable File Structure
; #STRUCTURE# ===================================================================================================================
; Name...........: $tagIMAGE_DOS_HEADER
; Description ...: Данный заголовок сделан для того, чтобы программы созданные для Windows не запускались из MS DOS.
; Fields ........: $tagIMAGE_DOS_HEADER - Структура описывает заголовок MS DOS для программ Windows.
; e_magic - Сигнатура заголовка.
; e_cblp - Колличество байт на последней странице файла.
; e_cp - Колличество страниц в файле.
; e_crlc - Релокация.
; e_cparhdr - Размер заголовка в параграфах.
; e_minalloc - Минимальные дополнительные параграфы.
; e_maxalloc - Максимальные дополнительные параграфы.
; e_ss - Начальное относительное значение регистра SS.
; e_sp - Начальное значение регистра SP.
; e_csum - Контрольная сумма.
; e_ip - Начальное значение регистра IP.
; e_cs - Начальное относительное значение регистра CS.
; e_lfarlc - Адрес в файле на таблицу переадресации.
; e_ovno - Количество оверлеев.
; e_res[4] - Зарезервировано.
; e_oemid - OEM идентифкатор.
; e_oeminfo - OEM информация.
; e_res2[10] - Зарезервировано
; e_lfanew - Адрес в файле нового заголовка (PE)
; Remarks .......:
; ===============================================================================================================================
Global Const $tagIMAGE_DOS_HEADER = 'ushort e_magic;ushort e_cblp;ushort e_cp;ushort e_crlc;ushort e_cparhdr;' & _
'ushort e_minalloc;ushort e_maxalloc;ushort e_ss;ushort e_sp;ushort e_csum;ushort e_ip;ushort e_cs;' & _
'ushort e_lfarlc;ushort e_ovno;ushort e_res[4];ushort e_oemid;ushort e_oeminfo;ushort e_res2[10];dword e_lfanew'
; #STRUCTURE# ===================================================================================================================
; Name...........: $tagIMAGE_FILE_HEADER
; Description ...:
; Fields ........: $tagIMAGE_FILE_HEADER - Представляет COFF формат заголовка.
; Machine - Архитектура, на которой может запускаться файл.
; NumberOfSections - Колличество секторов.
; TimeDateStamp - Временной штамп.
; PointerToSymbolTable - Указатель на таблицу символов.
; NumberOfSymbols - Колличество символов.
; SizeOfOptionalHeader - Размер дополнительного заголовка.
; Characteristics - Характеристики.
; Remarks .......:
; ===============================================================================================================================
Global Const $tagIMAGE_FILE_HEADER = 'ushort Machine;ushort NumberOfSections;dword TimeDateStamp;' & _
'dword PointerToSymbolTable;dword NumberOfSymbols;ushort SizeOfOptionalHeader;ushort Characteristics'
; #STRUCTURE# ===================================================================================================================
; Name...........: $tagIMAGE_OPTIONAL_HEADER
; Description ...:
; Fields ........: $tagIMAGE_OPTIONAL_HEADER - Дополнительный формат заголовка.
; Magic - Тип файла.
; MajorLinkerVersion - Основной номер версии компоновщика.
; MinorLinkerVersion - Дополнительный номер версии компоновщика.
; SizeOfCode - Размер кода раздела в байтах, или сумма всех таких участков, если есть несколько разделов кода.
; SizeOfInitializedData - Размер инициализированных данных раздела в байтах, или сумма всех таких участков, если есть несколько разделов инициализированных данных.
; SizeOfUninitializedData - Размер неинициализированных данных раздела в байтах, или сумма всех таких участков, если есть несколько разделов неинициализированных данных.
; AddressOfEntryPoint - Указатель на точку входа.
; BaseOfCode - Указатель на начало секции кода.
; BaseOfData - Указатель на начало секции данных.
; ImageBase - Предпочтительный адрес первого байта при загрузке в память. Это значение кратно 64 байта. Значение по умолчанию для библиотек DLL 0x10000000. Значение по умолчанию для приложений 0x00400000, за исключением Windows CE 0x00010000.
; SectionAlignment - Выравнивание разделов загруженых в память, в байтах (Должно быть больше или равна FileAlignment).
; FileAlignment - Согласование исходных данных разделов в файл в байтах.
; MajorOperatingSystemVersion - Основной номер версии необходимой операционной системы.
; MinorOperatingSystemVersion - Дополнительный номер версии необходимох операционной системы.
; MajorImageVersion - Основной номер версии.
; MinorImageVersion - Дополнительный номер версии.
; MajorSubsystemVersion - Основной номер версии подсистемы.
; MinorSubsystemVersion - Дополнительный номер версии подсистемы.
; Win32VersionValue - Зарезервирован и и должен быть равен 0 (нулю).
; SizeOfImage - Размер в байтах, включая все заголовки. Должна быть кратна SectionAlignment.
; SizeOfHeaders - Общий размер заголовка, округляется до кратного значения, указанного в FileAlignment
; CheckSum - Контрольная сумма файла образа.
; Subsystem - Подсистемы необходимые для запуска образа.
; DllCharacteristics - DLL характеристики образа.
; SizeOfStackReserve - Количество байт, резерв для стека.
; SizeOfStackCommit - Количество байт для выполнения в стеке.
; SizeOfHeapReserve - Количество байт, резерв для локальной массы.
; SizeOfHeapCommit - Количество байт для выполнения в локальной массе.
; LoaderFlags - Этот элемент является устаревшим.
; NumberOfRvaAndSizes - Количество каталогов в оставшейся части дополнительного заголовка. Каждая запись описывает расположение и размер.
; $DATA_DIRECTORY - Каталог данных.
; Remarks .......:
; ===============================================================================================================================
Global $DATA_DIRECTORY = ''
For $i = 0 To 15
$DATA_DIRECTORY &= ';ulong VirtualAddress' & $i & ';ulong Size' & $i
Next
Global Const $tagIMAGE_OPTIONAL_HEADER = 'ushort Magic;ubyte MajorLinkerVersion;ubyte MinorLinkerVersion;dword SizeOfCode;' & _
'dword SizeOfInitializedData;dword SizeOfUninitializedData;dword AddressOfEntryPoint;dword BaseOfCode;dword BaseOfData;' & _
'dword ImageBase;dword SectionAlignment;dword FileAlignment;ushort MajorOperatingSystemVersion;ushort MinorOperatingSystemVersion;' & _
'ushort MajorImageVersion;ushort MinorImageVersion;ushort MajorSubsystemVersion;ushort MinorSubsystemVersion;dword Win32VersionValue;' & _
'dword SizeOfImage;dword SizeOfHeaders;dword CheckSum;ushort Subsystem;ushort DllCharacteristics;dword SizeOfStackReserve;' & _
'dword SizeOfStackCommit;dword SizeOfHeapReserve;dword SizeOfHeapCommit;dword LoaderFlags;dword NumberOfRvaAndSizes' & $DATA_DIRECTORY
; #STRUCTURE# ===================================================================================================================
; Name...........: $tagIMAGE_SECTION_HEADER
; Description ...:
; Fields ........: $tagIMAGE_SECTION_HEADER - Заголовок секций образа.
; Name[8] - Имя секций.
; VirtualSize - Виртуальный размер.
; VirtualAddress - Виртуальный адрес.
; SizeOfRawData - Размер RAW данных.
; PointerToRawData - Указатель на RAW данные.
; PointerToRelocations - Указатель на релокейшены.
; PointerToLinenumbers - Указатель на номера строк.
; NumberOfRelocations - Колличество релокейшенов.
; NumberOfLinenumbers - Колличество номеров строк.
; Characteristics - Характеристики.
; Remarks .......:
; ===============================================================================================================================
Global Const $tagIMAGE_SECTION_HEADER = 'byte Name[8];dword VirtualSize;dword VirtualAddress;dword SizeOfRawData;' & _
'dword PointerToRawData;dword PointerToRelocations;dword PointerToLinenumbers;ushort NumberOfRelocations;' & _
'ushort NumberOfLinenumbers;dword Characteristics'
; #STRUCTURE# ===================================================================================================================
; Name...........: $tagIMAGE_NT_HEADER
; Description ...:
; Fields ........: $tagIMAGE_NT_HEADER - Представляет формат PE заголовка.
; Signature - Сигнатура.
; Remarks .......:
; ===============================================================================================================================
Global Const $tagIMAGE_NT_HEADER = 'dword Signature;' & $tagIMAGE_FILE_HEADER & ';' & $tagIMAGE_OPTIONAL_HEADER
#EndRegion Executable File Structure
#Region Global Variables and Constants
; ===============================================================================================================================
; $tagIMAGE_FILE_HEADER\Machine
; ===============================================================================================================================
Global Const $IMAGE_FILE_MACHINE_I386 = 0x014c ;~ Intel I386
Global Const $IMAGE_FILE_MACHINE_I860 = 0x014d ;~ Intel I860
Global Const $IMAGE_FILE_MACHINE_IA64 = 0x0200 ;~ Intel Itanium
Global Const $IMAGE_FILE_MACHINE_R3000 = 0x0162 ;~ MIPS little-endian, 160h big-endian
Global Const $IMAGE_FILE_MACHINE_R4000 = 0x0166 ;~ MIPS little-endian
Global Const $IMAGE_FILE_MACHINE_R10000 = 0x0168 ;~ MIPS little-endian
Global Const $IMAGE_FILE_MACHINE_ALPHA = 0x0184 ;~ DEC Alpha AXP
Global Const $IMAGE_FILE_MACHINE_POWERPC = 0x01F0 ;~ IBM PowerPC Little-Endian
Global Const $IMAGE_FILE_MACHINE_MOTOROL = 0x0268 ;~ Motorola 68000
Global Const $IMAGE_FILE_MACHINE_PA_RISC = 0x0290 ;~ PA RISC (Precision Architecture)
Global Const $IMAGE_FILE_MACHINE_AMD64 = 0x8664 ;~ x64
; ===============================================================================================================================
; $tagIMAGE_FILE_HEADER\Characteristics
; ===============================================================================================================================
Global Const $IMAGE_FILE_RELOCS_STRIPPED = 0x0001
Global Const $IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002
Global Const $IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004
Global Const $IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008
Global Const $IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010
Global Const $IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020
Global Const $IMAGE_FILE_BYTES_REVERSED_LO = 0x0080
Global Const $IMAGE_FILE_32BIT_MACHINE = 0x0100
Global Const $IMAGE_FILE_DEBUG_STRIPPED = 0x0200
Global Const $IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400
Global Const $IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800
Global Const $IMAGE_FILE_SYSTEM = 0x1000
Global Const $IMAGE_FILE_DLL = 0x2000
Global Const $IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000
Global Const $IMAGE_FILE_BYTES_REVERSED_HI = 0x8000
; ===============================================================================================================================
; $tagIMAGE_OPTIONAL_HEADER\Magic
; ===============================================================================================================================
Global Const $IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b ;~ Файл является исполняемым образом. (32-битное приложение.)
Global Const $IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b ;~ Файл является исполняемым образом. (64-битное приложение.)
Global Const $IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x107 ;~ Файл образа ПЗУ.
; ===============================================================================================================================
; $tagIMAGE_OPTIONAL_HEADER\Subsystem
; ===============================================================================================================================
Global Const $IMAGE_SUBSYSTEM_UNKNOWN = 0 ;~ Не известная подсистема.
Global Const $IMAGE_SUBSYSTEM_NATIVE = 1 ;~ Нет необходимости подсистемы.
Global Const $IMAGE_SUBSYSTEM_WINDOWS_GUI = 2 ;~ Windows, графический интерфейс пользователя (GUI) подсистемы.
Global Const $IMAGE_SUBSYSTEM_WINDOWS_CUI = 3 ;~ ОС Windows в текстовом режиме пользовательского интерфейса (АПИ) подсистемы.
Global Const $IMAGE_SUBSYSTEM_OS2_CUI = 5 ;~ OS / 2 CUI подсистемы.
Global Const $IMAGE_SUBSYSTEM_POSIX_CUI = 7 ;~ CUI POSIX подсистемы.
Global Const $IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9 ;~ Windows CE системы.
Global Const $IMAGE_SUBSYSTEM_EFI_APPLICATION = 10 ;~ Extensible Firmware Interface (EFI) приложения.
Global Const $IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11 ;~ EFI загрузочный драйвер.
Global Const $IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12 ;~ EFI драйвер службы.
Global Const $IMAGE_SUBSYSTEM_EFI_ROM = 13 ;~ EFI ROM образ.
Global Const $IMAGE_SUBSYSTEM_XBOX = 14 ;~ Xbox системы.
Global Const $IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 ;~ Загрузочное приложение.
; ===============================================================================================================================
; $tagIMAGE_OPTIONAL_HEADER\DllCharacteristics
; ===============================================================================================================================
Global Const $IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040 ;~ Динамическая база.
Global Const $IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080 ;~ Проверка целостности кода. Если установить этот флаг, то PointerToRawData должна быть ровна 0 (нулю)
Global Const $IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100 ;~ Образ совместим с Data Execution Prevention (DEP).
Global Const $IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200 ;~ Без изоляции.
Global Const $IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400 ;~ Образ не использует структурную обработку (SEH).
Global Const $IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800 ;~ Не связывать образ.
Global Const $IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000 ;~ Драйвер WDM.
Global Const $IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 ;~ Терминальный сервер.
; ===============================================================================================================================
; $tagIMAGE_NT_HEADER\Signature
; ===============================================================================================================================
Global Const $IMAGE_DOS_SIGNATURE_MZ = 0x5A4D ;~ MZ сигнатура.
Global Const $IMAGE_OS2_SIGNATURE_NE = 0x454E ;~ NE сигнатура.
Global Const $IMAGE_OS2_SIGNATURE_LE = 0x454C ;~ LE сигнатура.
Global Const $IMAGE_NT_SIGNATURE_PE00 = 0x00004550 ;~ PE00 сигнатура.
; ===============================================================================================================================
; $tagIMAGE_SECTION_HEADER\Characteristics
; ===============================================================================================================================
Global Const $IMAGE_SCN_CNT_CODE = 0x00000020 ;~ Секция содержит код.
Global Const $IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 ;~ Секция содержит инициализированные данные.
Global Const $IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 ;~ Секция содержит неинициализированные данные.
Global Const $IMAGE_SCN_LNK_INFO = 0x00000200 ;~ Содержит комментарии или другие информации.
Global Const $IMAGE_SCN_LNK_REMOVE = 0x00000800 ;~ Секция не станет частью образа.
Global Const $IMAGE_SCN_LNK_COMDAT = 0x00001000 ;~ Секция содержет COMDAT данные.
Global Const $IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 ;~ Сброс спекулятивной обработки исключений бит в TLB записях для данного раздела.
Global Const $IMAGE_SCN_GPREL = 0x00008000 ;~ Секция содержит ссылки на данные через глобальный указатель.
Global Const $IMAGE_SCN_ALIGN_1BYTES = 0x00100000 ;~ Выравнивание данных на 1-байт.
Global Const $IMAGE_SCN_ALIGN_2BYTES = 0x00200000 ;~ Выравнивание данных на 2-байта.
Global Const $IMAGE_SCN_ALIGN_4BYTES = 0x00300000 ;~ Выравнивание данных на 4-байта.
Global Const $IMAGE_SCN_ALIGN_8BYTES = 0x00400000 ;~ Выравнивание данных на 8-байт.
Global Const $IMAGE_SCN_ALIGN_16BYTES = 0x00500000 ;~ Выравнивание данных на 16-байт.
Global Const $IMAGE_SCN_ALIGN_32BYTES = 0x00600000 ;~ Выравнивание данных на 32-байта.
Global Const $IMAGE_SCN_ALIGN_64BYTES = 0x00700000 ;~ Выравнивание данных на 64-байта.
Global Const $IMAGE_SCN_ALIGN_128BYTES = 0x00800000 ;~ Выравнивание данных на 128-байт.
Global Const $IMAGE_SCN_ALIGN_256BYTES = 0x00900000 ;~ Выравнивание данных на 256-байт.
Global Const $IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 ;~ Выравнивание данных на 512-байт.
Global Const $IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 ;~ Выравнивание данных на 1024-байта.
Global Const $IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 ;~ Выравнивание данных на 2048-байт.
Global Const $IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 ;~ Выравнивание данных на 4096-байт.
Global Const $IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 ;~ Выравнивание данных на 8192-байта.
Global Const $IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 ;~ Секция содержит расширенные поправки.
Global Const $IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 ;~ Секция может быть игнорирована.
Global Const $IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 ;~ Секция не кешируема.
Global Const $IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 ;~ Секция не сбрасывается в страничный файл.
Global Const $IMAGE_SCN_MEM_SHARED = 0x10000000 ;~ Общая секция.
Global Const $IMAGE_SCN_MEM_EXECUTE = 0x20000000 ;~ Секция выполняемая.
Global Const $IMAGE_SCN_MEM_READ = 0x40000000 ;~ Секция для чтения.
Global Const $IMAGE_SCN_MEM_WRITE = 0x80000000 ;~ Секция для записи.
#EndRegion Global Variables and Constants