Что нового

Добавление новой секции в PE файл.

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Имеется пример на PureBasic, который добавляет в PE файл новую секцию с данными ".test".

Код:
#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
 
Верх