retdec
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
PeLibAux.h File Reference
#include <numeric>
#include <string.h>

Go to the source code of this file.

Classes

struct  PeLib::LoaderErrorInfo
 
class  PeLib::PELIB_IMAGE_FILE_MACHINE_ITERATOR
 
struct  PeLib::PELIB_IMAGE_DOS_HEADER
 
struct  PeLib::PELIB_IMAGE_FILE_HEADER
 
struct  PeLib::PELIB_IMAGE_DATA_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_OPTIONAL_HEADER32
 
struct  PeLib::PELIB_IMAGE_OPTIONAL_HEADER64
 
struct  PeLib::PELIB_IMAGE_OPTIONAL_HEADER
 
struct  PeLib::PELIB_IMAGE_NT_HEADERS_EX< x >
 
struct  PeLib::PELIB_IMAGE_SECTION_HEADER
 
struct  PeLib::PELIB_SECTION_HEADER
 
struct  PeLib::PELIB_IMAGE_THUNK_DATA
 
struct  PeLib::PELIB_IMAGE_IMPORT_DESCRIPTOR
 
struct  PeLib::PELIB_IMAGE_EXPORT_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_BOUND_IMPORT_DESCRIPTOR
 
struct  PeLib::PELIB_IMAGE_BOUND_DIRECTORY
 
struct  PeLib::PELIB_EXP_FUNC_INFORMATION
 
struct  PeLib::PELIB_IMAGE_RESOURCE_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_RESOURCE_DIRECTORY_ENTRY
 
struct  PeLib::PELIB_IMG_RES_DIR_ENTRY
 
struct  PeLib::PELIB_IMAGE_BASE_RELOCATION
 
struct  PeLib::PELIB_IMAGE_COR20_HEADER
 
struct  PeLib::PELIB_IMAGE_EXP_DIRECTORY
 
struct  PeLib::PELIB_THUNK_DATA
 
struct  PeLib::PELIB_DELAY_IMPORT
 
struct  PeLib::PELIB_IMAGE_IMPORT_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_RESOURCE_DATA_ENTRY
 
struct  PeLib::PELIB_IMAGE_RESOURCE_DATA
 
struct  PeLib::IMG_BASE_RELOC
 
struct  PeLib::PELIB_IMAGE_DEBUG_DIRECTORY
 
struct  PeLib::PELIB_IMG_DEBUG_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_TLS_DIRECTORY32
 
struct  PeLib::PELIB_IMAGE_TLS_DIRECTORY
 
struct  PeLib::PELIB_IMAGE_COFF_SYMBOL
 
struct  PeLib::PELIB_IMAGE_RICH_HEADER_RECORD
 
struct  PeLib::PELIB_IMAGE_LOAD_CONFIG_CODE_INTEGRITY
 
struct  PeLib::PELIB_IMAGE_LOAD_CONFIG_DIRECTORY32
 
struct  PeLib::PELIB_IMAGE_LOAD_CONFIG_DIRECTORY64
 
struct  PeLib::PELIB_IMAGE_DELAY_LOAD_DESCRIPTOR
 
struct  PeLib::PELIB_IMAGE_DELAY_IMPORT_DIRECTORY_RECORD
 
struct  PeLib::PELIB_IMAGE_CERTIFICATE_ENTRY
 
class  IStreamWrapper
 

Namespaces

 PeLib
 

Typedefs

typedef std::vector< std::uint8_t > PeLib::ByteBuffer
 

Enumerations

enum  PeLib::errorCodes {
  PeLib::ERROR_NONE = 0 , PeLib::ERROR_OPENING_FILE = -1 , PeLib::ERROR_INVALID_FILE = -2 , PeLib::ERROR_TOO_MANY_SECTIONS = -3 ,
  PeLib::ERROR_NOT_ENOUGH_SPACE = -4 , PeLib::ERROR_NO_FILE_ALIGNMENT = -5 , PeLib::ERROR_NO_SECTION_ALIGNMENT = -6 , PeLib::ERROR_ENTRY_NOT_FOUND = -7 ,
  PeLib::ERROR_DUPLICATE_ENTRY = -8 , PeLib::ERROR_DIRECTORY_DOES_NOT_EXIST = -9 , PeLib::ERROR_COFF_SYMBOL_TABLE_DOES_NOT_EXIST = -10
}
 
enum  PeLib::LoaderError {
  PeLib::LDR_ERROR_NONE = 0 , PeLib::LDR_ERROR_FILE_TOO_BIG , PeLib::LDR_ERROR_E_LFANEW_UNALIGNED , PeLib::LDR_ERROR_E_LFANEW_OUT_OF_FILE ,
  PeLib::LDR_ERROR_NTHEADER_OFFSET_OVERFLOW , PeLib::LDR_ERROR_NTHEADER_OUT_OF_FILE , PeLib::LDR_ERROR_NO_NT_SIGNATURE , PeLib::LDR_ERROR_FILE_HEADER_INVALID ,
  PeLib::LDR_ERROR_IMAGE_NON_EXECUTABLE , PeLib::LDR_ERROR_NO_OPTHDR_MAGIC , PeLib::LDR_ERROR_SIZE_OF_HEADERS_ZERO , PeLib::LDR_ERROR_FILE_ALIGNMENT_ZERO ,
  PeLib::LDR_ERROR_FILE_ALIGNMENT_NOT_POW2 , PeLib::LDR_ERROR_SECTION_ALIGNMENT_ZERO , PeLib::LDR_ERROR_SECTION_ALIGNMENT_NOT_POW2 , PeLib::LDR_ERROR_SECTION_ALIGNMENT_TOO_SMALL ,
  PeLib::LDR_ERROR_SECTION_ALIGNMENT_INVALID , PeLib::LDR_ERROR_SIZE_OF_IMAGE_TOO_BIG , PeLib::LDR_ERROR_INVALID_MACHINE32 , PeLib::LDR_ERROR_INVALID_MACHINE64 ,
  PeLib::LDR_ERROR_SIZE_OF_HEADERS_INVALID , PeLib::LDR_ERROR_SIZE_OF_OPTHDR_NOT_ALIGNED , PeLib::LDR_ERROR_SIZE_OF_IMAGE_ZERO , PeLib::LDR_ERROR_IMAGE_BASE_NOT_ALIGNED ,
  PeLib::LDR_ERROR_SIZE_OF_IMAGE_PTES_ZERO , PeLib::LDR_ERROR_RAW_DATA_OVERFLOW , PeLib::LDR_ERROR_SECTION_HEADERS_OUT_OF_IMAGE , PeLib::LDR_ERROR_SECTION_HEADERS_OVERFLOW ,
  PeLib::LDR_ERROR_SECTION_SIZE_MISMATCH , PeLib::LDR_ERROR_INVALID_SECTION_VA , PeLib::LDR_ERROR_INVALID_SECTION_VSIZE , PeLib::LDR_ERROR_INVALID_SECTION_RAWSIZE ,
  PeLib::LDR_ERROR_INVALID_SIZE_OF_IMAGE , PeLib::LDR_ERROR_FILE_IS_CUT , PeLib::LDR_ERROR_FILE_IS_CUT_LOADABLE , PeLib::LDR_ERROR_IMPDIR_OUT_OF_FILE ,
  PeLib::LDR_ERROR_IMPDIR_CUT , PeLib::LDR_ERROR_IMPDIR_COUNT_EXCEEDED , PeLib::LDR_ERROR_IMPDIR_NAME_RVA_INVALID , PeLib::LDR_ERROR_IMPDIR_THUNK_RVA_INVALID ,
  PeLib::LDR_ERROR_IMPDIR_IMPORT_COUNT_EXCEEDED , PeLib::LDR_ERROR_RSRC_OVER_END_OF_IMAGE , PeLib::LDR_ERROR_RSRC_NAME_OUT_OF_IMAGE , PeLib::LDR_ERROR_RSRC_DATA_OUT_OF_IMAGE ,
  PeLib::LDR_ERROR_RSRC_SUBDIR_OUT_OF_IMAGE , PeLib::LDR_ERROR_ENTRY_POINT_OUT_OF_IMAGE , PeLib::LDR_ERROR_ENTRY_POINT_ZEROED , PeLib::LDR_ERROR_DIGITAL_SIGNATURE_CUT ,
  PeLib::LDR_ERROR_DIGITAL_SIGNATURE_ZEROED , PeLib::LDR_ERROR_RELOCATIONS_OUT_OF_IMAGE , PeLib::LDR_ERROR_RELOC_BLOCK_INVALID_VA , PeLib::LDR_ERROR_RELOC_BLOCK_INVALID_LENGTH ,
  PeLib::LDR_ERROR_RELOC_ENTRY_BAD_TYPE , PeLib::LDR_ERROR_INMEMORY_IMAGE , PeLib::LDR_ERROR_MAX
}
 
enum  { PeLib::PEFILE32 = 32 , PeLib::PEFILE64 = 64 , PeLib::PEFILE_UNKNOWN = 0 }
 
enum  : std::uint32_t {
  PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_EXPORT , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_IMPORT , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_RESOURCE , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_EXCEPTION ,
  PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_SECURITY , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_BASERELOC , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_DEBUG , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_ARCHITECTURE ,
  PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_GLOBALPTR , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_TLS , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ,
  PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_IAT , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT , PeLib::PELIB_IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR
}
 
enum  : std::uint32_t {
  PeLib::PELIB_PAGE_NOACCESS = 0x01 , PeLib::PELIB_PAGE_READONLY = 0x02 , PeLib::PELIB_PAGE_READWRITE = 0x04 , PeLib::PELIB_PAGE_WRITECOPY = 0x08 ,
  PeLib::PELIB_PAGE_EXECUTE = 0x10 , PeLib::PELIB_PAGE_EXECUTE_READ = 0x20 , PeLib::PELIB_PAGE_EXECUTE_READWRITE = 0x40 , PeLib::PELIB_PAGE_EXECUTE_WRITECOPY = 0x80
}
 
enum  : std::uint32_t {
  PeLib::PELIB_IMAGE_SCN_TYPE_NO_PAD = 0x00000008 , PeLib::PELIB_IMAGE_SCN_CNT_CODE = 0x00000020 , PeLib::PELIB_IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 , PeLib::PELIB_IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 ,
  PeLib::PELIB_IMAGE_SCN_LNK_OTHER = 0x00000100 , PeLib::PELIB_IMAGE_SCN_LNK_INFO = 0x00000200 , PeLib::PELIB_IMAGE_SCN_LNK_REMOVE = 0x00000800 , PeLib::PELIB_IMAGE_SCN_LNK_COMDAT = 0x00001000 ,
  PeLib::PELIB_IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 , PeLib::PELIB_IMAGE_SCN_GPREL = 0x00008000 , PeLib::PELIB_IMAGE_SCN_MEM_FARDATA = 0x00008000 , PeLib::PELIB_IMAGE_SCN_MEM_PURGEABLE = 0x00020000 ,
  PeLib::PELIB_IMAGE_SCN_MEM_16BIT = 0x00020000 , PeLib::PELIB_IMAGE_SCN_MEM_LOCKED = 0x00040000 , PeLib::PELIB_IMAGE_SCN_MEM_PRELOAD = 0x00080000 , PeLib::PELIB_IMAGE_SCN_ALIGN_1BYTES = 0x00100000 ,
  PeLib::PELIB_IMAGE_SCN_ALIGN_2BYTES = 0x00200000 , PeLib::PELIB_IMAGE_SCN_ALIGN_4BYTES = 0x00300000 , PeLib::PELIB_IMAGE_SCN_ALIGN_8BYTES = 0x00400000 , PeLib::PELIB_IMAGE_SCN_ALIGN_16BYTES = 0x00500000 ,
  PeLib::PELIB_IMAGE_SCN_ALIGN_BYTES = 0x00600000 , PeLib::PELIB_IMAGE_SCN_ALIGN_64BYTES = 0x00700000 , PeLib::PELIB_IMAGE_SCN_ALIGN_128BYTES = 0x00800000 , PeLib::PELIB_IMAGE_SCN_ALIGN_256BYTES = 0x00900000 ,
  PeLib::PELIB_IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 , PeLib::PELIB_IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 , PeLib::PELIB_IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 , PeLib::PELIB_IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 ,
  PeLib::PELIB_IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 , PeLib::PELIB_IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 , PeLib::PELIB_IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 , PeLib::PELIB_IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 ,
  PeLib::PELIB_IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 , PeLib::PELIB_IMAGE_SCN_MEM_SHARED = 0x10000000 , PeLib::PELIB_IMAGE_SCN_MEM_EXECUTE = 0x20000000 , PeLib::PELIB_IMAGE_SCN_MEM_READ = 0x40000000 ,
  PeLib::PELIB_IMAGE_SCN_MEM_WRITE = 0x80000000U
}
 
enum  PeLib::PELIB_IMAGE_FILE_MACHINE : std::uint16_t {
  PeLib::PELIB_IMAGE_FILE_MACHINE_UNKNOWN = 0 , PeLib::PELIB_IMAGE_FILE_MACHINE_I386 = 0x014C , PeLib::PELIB_IMAGE_FILE_MACHINE_I486 = 0x014D , PeLib::PELIB_IMAGE_FILE_MACHINE_PENTIUM = 0x014E ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_R3000_BIG = 0x0160 , PeLib::PELIB_IMAGE_FILE_MACHINE_R3000_LITTLE = 0x0162 , PeLib::PELIB_IMAGE_FILE_MACHINE_R4000 = 0x0166 , PeLib::PELIB_IMAGE_FILE_MACHINE_R10000 = 0x0168 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169 , PeLib::PELIB_IMAGE_FILE_MACHINE_ALPHA = 0x0184 , PeLib::PELIB_IMAGE_FILE_MACHINE_SH3 = 0x01A2 , PeLib::PELIB_IMAGE_FILE_MACHINE_SH3DSP = 0x01A3 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_SH3E = 0x01A4 , PeLib::PELIB_IMAGE_FILE_MACHINE_SH4 = 0x01A6 , PeLib::PELIB_IMAGE_FILE_MACHINE_SH5 = 0x01A8 , PeLib::PELIB_IMAGE_FILE_MACHINE_ARM = 0x01C0 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_THUMB = 0x01C2 , PeLib::PELIB_IMAGE_FILE_MACHINE_ARMNT = 0x01C4 , PeLib::PELIB_IMAGE_FILE_MACHINE_AM33 = 0x01D3 , PeLib::PELIB_IMAGE_FILE_MACHINE_POWERPC = 0x01F0 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1 , PeLib::PELIB_IMAGE_FILE_MACHINE_IA64 = 0x0200 , PeLib::PELIB_IMAGE_FILE_MACHINE_MIPS16 = 0x0266 , PeLib::PELIB_IMAGE_FILE_MACHINE_MOTOROLA68000 = 0x0268 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_PARISC = 0x0290 , PeLib::PELIB_IMAGE_FILE_MACHINE_ALPHA64 = 0x0284 , PeLib::PELIB_IMAGE_FILE_MACHINE_AXP64 = PELIB_IMAGE_FILE_MACHINE_ALPHA64 , PeLib::PELIB_IMAGE_FILE_MACHINE_MIPSFPU = 0x0366 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466 , PeLib::PELIB_IMAGE_FILE_MACHINE_TRICORE = 0x0520 , PeLib::PELIB_IMAGE_FILE_MACHINE_EBC = 0x0EBC , PeLib::PELIB_IMAGE_FILE_MACHINE_AMD64 = 0x8664 ,
  PeLib::PELIB_IMAGE_FILE_MACHINE_M32R = 0x9041 , PeLib::PELIB_IMAGE_FILE_MACHINE_ARM64 = 0xAA64 , PeLib::PELIB_IMAGE_FILE_MACHINE_MSIL = 0xC0EE
}
 
enum  : std::uint32_t {
  PeLib::PELIB_IMAGE_FILE_RELOCS_STRIPPED = 0x0001 , PeLib::PELIB_IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 , PeLib::PELIB_IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004 , PeLib::PELIB_IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008 ,
  PeLib::PELIB_IMAGE_FILE_AGGRESSIVE_WS_TRIM = 0x0010 , PeLib::PELIB_IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020 , PeLib::PELIB_IMAGE_FILE_BYTES_REVERSED_LO = 0x0080 , PeLib::PELIB_IMAGE_FILE_32BIT_MACHINE = 0x0100 ,
  PeLib::PELIB_IMAGE_FILE_DEBUG_STRIPPED = 0x0200 , PeLib::PELIB_IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 , PeLib::PELIB_IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800 , PeLib::PELIB_IMAGE_FILE_SYSTEM = 0x1000 ,
  PeLib::PELIB_IMAGE_FILE_DLL = 0x2000 , PeLib::PELIB_IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000 , PeLib::PELIB_IMAGE_FILE_BYTES_REVERSED_HI = 0x8000
}
 
enum  : std::uint16_t {
  PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200 ,
  PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000 ,
  PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000 , PeLib::PELIB_IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
}
 
enum  : std::uint16_t { PeLib::PELIB_IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b , PeLib::PELIB_IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b , PeLib::PELIB_IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x107 }
 
enum  : std::uint16_t {
  PeLib::PELIB_IMAGE_SUBSYSTEM_UNKNOWN = 0 , PeLib::PELIB_IMAGE_SUBSYSTEM_NATIVE = 1 , PeLib::PELIB_IMAGE_SUBSYSTEM_WINDOWS_GUI = 2 , PeLib::PELIB_IMAGE_SUBSYSTEM_WINDOWS_CUI = 3 ,
  PeLib::PELIB_IMAGE_SUBSYSTEM_OS2_CUI = 5 , PeLib::PELIB_IMAGE_SUBSYSTEM_POSIX_CUI = 7 , PeLib::PELIB_IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8 , PeLib::PELIB_IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9
}
 
enum  : uint16_t {
  PeLib::PELIB_IMAGE_REL_BASED_ABSOLUTE = 0 , PeLib::PELIB_IMAGE_REL_BASED_HIGH = 1 , PeLib::PELIB_IMAGE_REL_BASED_LOW = 2 , PeLib::PELIB_IMAGE_REL_BASED_HIGHLOW = 3 ,
  PeLib::PELIB_IMAGE_REL_BASED_HIGHADJ = 4 , PeLib::PELIB_IMAGE_REL_BASED_MIPS_JMPADDR = 5 , PeLib::PELIB_IMAGE_REL_BASED_IA64_IMM64 = 9 , PeLib::PELIB_IMAGE_REL_BASED_DIR64 = 10
}
 
enum  : std::uint32_t {
  PeLib::PELIB_RT_CURSOR = 1 , PeLib::PELIB_RT_BITMAP , PeLib::PELIB_RT_ICON , PeLib::PELIB_RT_MENU ,
  PeLib::PELIB_RT_DIALOG , PeLib::PELIB_RT_STRING , PeLib::PELIB_RT_FONTDIR , PeLib::PELIB_RT_FONT ,
  PeLib::PELIB_RT_ACCELERATOR , PeLib::PELIB_RT_RCDATA , PeLib::PELIB_RT_MESSAGETABLE , PeLib::PELIB_RT_GROUP_CURSOR ,
  PeLib::PELIB_RT_GROUP_ICON = 14 , PeLib::PELIB_RT_VERSION = 16 , PeLib::PELIB_RT_DLGINCLUDE , PeLib::PELIB_RT_PLUGPLAY = 19 ,
  PeLib::PELIB_RT_VXD , PeLib::PELIB_RT_ANICURSOR , PeLib::PELIB_RT_ANIICON , PeLib::PELIB_RT_HTML ,
  PeLib::PELIB_RT_MANIFEST , PeLib::PELIB_RT_DLGINIT = 240 , PeLib::PELIB_RT_TOOLBAR
}
 
enum  : std::uint16_t {
  PeLib::PELIB_LANG_NEUTRAL = 0x00 , PeLib::PELIB_LANG_ARABIC = 0x01 , PeLib::PELIB_LANG_BULGARIAN = 0x02 , PeLib::PELIB_LANG_CATALAN = 0x03 ,
  PeLib::PELIB_LANG_CHINESE = 0x04 , PeLib::PELIB_LANG_CZECH = 0x05 , PeLib::PELIB_LANG_DANISH = 0x06 , PeLib::PELIB_LANG_GERMAN = 0x07 ,
  PeLib::PELIB_LANG_GREEK = 0x08 , PeLib::PELIB_LANG_ENGLISH = 0x09 , PeLib::PELIB_LANG_SPANISH = 0x0A , PeLib::PELIB_LANG_FINNISH = 0x0B ,
  PeLib::PELIB_LANG_FRENCH = 0x0C , PeLib::PELIB_LANG_HEBREW = 0x0D , PeLib::PELIB_LANG_HUNGARIAN = 0x0E , PeLib::PELIB_LANG_ICELANDIC = 0x0F ,
  PeLib::PELIB_LANG_ITALIAN = 0x10 , PeLib::PELIB_LANG_JAPANESE = 0x11 , PeLib::PELIB_LANG_KOREAN = 0x12 , PeLib::PELIB_LANG_DUTCH = 0x13 ,
  PeLib::PELIB_LANG_NORWEGIAN = 0x14 , PeLib::PELIB_LANG_POLISH = 0x15 , PeLib::PELIB_LANG_PORTUGUESE = 0x16 , PeLib::PELIB_LANG_ROMANIAN = 0x18 ,
  PeLib::PELIB_LANG_RUSSIAN = 0x19 , PeLib::PELIB_LANG_CROATIAN = 0x1A , PeLib::PELIB_LANG_SERBIAN_NEUTRAL = 0x7C1A , PeLib::PELIB_LANG_BOSNIAN_NEUTRAL = 0x781A ,
  PeLib::PELIB_LANG_SLOVAK = 0x1B , PeLib::PELIB_LANG_ALBANIAN = 0x1C , PeLib::PELIB_LANG_SWEDISH = 0x1D , PeLib::PELIB_LANG_THAI = 0x1E ,
  PeLib::PELIB_LANG_TURKISH = 0x1F , PeLib::PELIB_LANG_URDU = 0x20 , PeLib::PELIB_LANG_INDONESIAN = 0x21 , PeLib::PELIB_LANG_UKRAINIAN = 0x22 ,
  PeLib::PELIB_LANG_BELARUSIAN = 0x23 , PeLib::PELIB_LANG_SLOVENIAN = 0x24 , PeLib::PELIB_LANG_ESTONIAN = 0x25 , PeLib::PELIB_LANG_LATVIAN = 0x26 ,
  PeLib::PELIB_LANG_LITHUANIAN = 0x27 , PeLib::PELIB_LANG_PERSIAN = 0x29 , PeLib::PELIB_LANG_VIETNAMESE = 0x2A , PeLib::PELIB_LANG_ARMENIAN = 0x2B ,
  PeLib::PELIB_LANG_AZERI = 0x2C , PeLib::PELIB_LANG_BASQUE = 0x2D , PeLib::PELIB_LANG_SORBIAN = 0x2E , PeLib::PELIB_LANG_LOWER_SORBIAN = 0x2E ,
  PeLib::PELIB_LANG_UPPER_SORBIAN = 0x2E , PeLib::PELIB_LANG_MACEDONIAN = 0x2F , PeLib::PELIB_LANG_TSWANA = 0x32 , PeLib::PELIB_LANG_XHOSA = 0x34 ,
  PeLib::PELIB_LANG_ZULU = 0x35 , PeLib::PELIB_LANG_AFRIKAANS = 0x36 , PeLib::PELIB_LANG_GEORGIAN = 0x37 , PeLib::PELIB_LANG_FAEROESE = 0x38 ,
  PeLib::PELIB_LANG_HINDI = 0x39 , PeLib::PELIB_LANG_MALTESE = 0x3A , PeLib::PELIB_LANG_SAMI = 0x3B , PeLib::PELIB_LANG_IRISH = 0x3C ,
  PeLib::PELIB_LANG_MALAY = 0x3E , PeLib::PELIB_LANG_KAZAK = 0x3F , PeLib::PELIB_LANG_KYRGYZ = 0x40 , PeLib::PELIB_LANG_SWAHILI = 0x41 ,
  PeLib::PELIB_LANG_UZBEK = 0x43 , PeLib::PELIB_LANG_TATAR = 0x44 , PeLib::PELIB_LANG_BENGALI = 0x45 , PeLib::PELIB_LANG_PUNJABI = 0x46 ,
  PeLib::PELIB_LANG_GUJARATI = 0x47 , PeLib::PELIB_LANG_ORIYA = 0x48 , PeLib::PELIB_LANG_TAMIL = 0x49 , PeLib::PELIB_LANG_TELUGU = 0x4A ,
  PeLib::PELIB_LANG_KANNADA = 0x4B , PeLib::PELIB_LANG_MALAYALAM = 0x4C , PeLib::PELIB_LANG_ASSAMESE = 0x4D , PeLib::PELIB_LANG_MARATHI = 0x4E ,
  PeLib::PELIB_LANG_SANSKRIT = 0x4F , PeLib::PELIB_LANG_MONGOLIAN = 0x50 , PeLib::PELIB_LANG_TIBETAN = 0x51 , PeLib::PELIB_LANG_WELSH = 0x52 ,
  PeLib::PELIB_LANG_KHMER = 0x53 , PeLib::PELIB_LANG_LAO = 0x54 , PeLib::PELIB_LANG_GALICIAN = 0x56 , PeLib::PELIB_LANG_KONKANI = 0x57 ,
  PeLib::PELIB_LANG_MANIPURI = 0x58 , PeLib::PELIB_LANG_SINDHI = 0x59 , PeLib::PELIB_LANG_SYRIAC = 0x5A , PeLib::PELIB_LANG_SINHALESE = 0x5B ,
  PeLib::PELIB_LANG_INUKTITUT = 0x5D , PeLib::PELIB_LANG_AMHARIC = 0x5E , PeLib::PELIB_LANG_TAMAZIGHT = 0x5F , PeLib::PELIB_LANG_KASHMIRI = 0x60 ,
  PeLib::PELIB_LANG_NEPALI = 0x61 , PeLib::PELIB_LANG_FRISIAN = 0x62 , PeLib::PELIB_LANG_PASHTO = 0x63 , PeLib::PELIB_LANG_FILIPINO = 0x64 ,
  PeLib::PELIB_LANG_DIVEHI = 0x65 , PeLib::PELIB_LANG_HAUSA = 0x68 , PeLib::PELIB_LANG_YORUBA = 0x6A , PeLib::PELIB_LANG_QUECHUA = 0x6B ,
  PeLib::PELIB_LANG_SOTHO = 0x6C , PeLib::PELIB_LANG_BASHKIR = 0x6D , PeLib::PELIB_LANG_LUXEMBOURGISH = 0x6E , PeLib::PELIB_LANG_GREENLANDIC = 0x6F ,
  PeLib::PELIB_LANG_IGBO = 0x70 , PeLib::PELIB_LANG_TIGRIGNA = 0x73 , PeLib::PELIB_LANG_YI = 0x78 , PeLib::PELIB_LANG_MAPUDUNGUN = 0x7A ,
  PeLib::PELIB_LANG_MOHAWK = 0x7C , PeLib::PELIB_LANG_BRETON = 0x7E , PeLib::PELIB_LANG_INVARIANT = 0x7F , PeLib::PELIB_LANG_UIGHUR = 0x80 ,
  PeLib::PELIB_LANG_MAORI = 0x81 , PeLib::PELIB_LANG_OCCITAN = 0x82 , PeLib::PELIB_LANG_CORSICAN = 0x83 , PeLib::PELIB_LANG_ALSATIAN = 0x84 ,
  PeLib::PELIB_LANG_YAKUT = 0x85 , PeLib::PELIB_LANG_KICHE = 0x86 , PeLib::PELIB_LANG_KINYARWANDA = 0x87 , PeLib::PELIB_LANG_WOLOF = 0x88 ,
  PeLib::PELIB_LANG_DARI = 0x8C , PeLib::PELIB_LANG_MALAGASY = 0x8D
}
 
enum  { PeLib::PELIB_WIN_CERT_REVISION_1_0 = 0x100 , PeLib::PELIB_WIN_CERT_REVISION_2_0 = 0x200 }
 
enum  { PeLib::PELIB_WIN_CERT_TYPE_X509 = 1 , PeLib::PELIB_WIN_CERT_TYPE_PKCS_SIGNED_DATA = 2 , PeLib::PELIB_WIN_CERT_TYPE_RESERVED_1 = 3 , PeLib::PELIB_WIN_CERT_TYPE_TS_STACK_SIGNED = 4 }
 

Functions

template<typename T >
unsigned int PeLib::accumulate (unsigned int size, const T &v)
 
bool PeLib::isEqualNc (const std::string &s1, const std::string &s2)
 
std::uint32_t PeLib::BytesToPages (std::uint32_t ByteSize)
 
std::uint32_t PeLib::AlignToSize (std::uint32_t ByteSize, std::uint32_t AlignSize)
 
std::uint64_t PeLib::fileSize (const std::string &filename)
 
std::uint64_t PeLib::fileSize (std::istream &stream)
 
std::uint64_t PeLib::fileSize (std::ofstream &file)
 
std::uint64_t PeLib::fileSize (std::fstream &file)
 
unsigned int PeLib::alignOffset (unsigned int uiOffset, unsigned int uiAlignment)
 
std::size_t PeLib::getStringFromFileOffset (std::istream &stream, std::string &result, std::size_t fileOffset, std::size_t maxLength=0, bool isPrintable=false, bool isNotTooLong=false)
 
const char * PeLib::getLoaderErrorString (LoaderError ldrError, bool userFriendly=false)
 
bool PeLib::getLoaderErrorLoadableAnyway (LoaderError ldrError)
 

Variables

const std::uint16_t PeLib::PELIB_IMAGE_DOS_SIGNATURE = 0x5A4D
 
const std::uint32_t PeLib::PELIB_PAGE_SIZE = 0x1000
 
const std::uint32_t PeLib::PELIB_PAGE_SIZE_SHIFT = 12
 
const std::uint32_t PeLib::PELIB_SIZE_64KB = 0x10000
 
const std::uint32_t PeLib::PELIB_SIZE_10MB = 0xA00000
 
const std::uint32_t PeLib::PELIB_IMAGE_NT_SIGNATURE = 0x00004550
 
const std::uint32_t PeLib::PELIB_MM_SIZE_OF_LARGEST_IMAGE = 0x77000000
 
const std::uint32_t PeLib::PELIB_MAX_TLS_CALLBACKS = 0x100
 
const std::uint32_t PeLib::PELIB_MAX_IMPORT_DLLS = 0x100
 
const std::uint32_t PeLib::PELIB_MAX_IMPORTED_FUNCTIONS = 0x1000
 
const std::uint32_t PeLib::PELIB_MAX_EXPORTED_FUNCTIONS = 0x1000
 
const std::uint32_t PeLib::PE_MAX_SECTION_COUNT_XP = 96
 
const std::uint32_t PeLib::PE_MAX_SECTION_COUNT_7 = 192
 
const std::uint32_t PeLib::PELIB_SECTOR_SIZE = 0x200
 
const std::uint32_t PeLib::PELIB_IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16
 
const std::uint32_t PeLib::PELIB_IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000
 
const std::uint32_t PeLib::PELIB_IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000
 
const std::uint32_t PeLib::PELIB_IMAGE_RESOURCE_RVA_MASK = 0x7FFFFFFF
 
const std::uint16_t PeLib::PELIB_MAX_RESOURCE_ENTRIES = 0x8000
 
const unsigned int PeLib::PELIB_IMAGE_SIZEOF_SHORT_NAME = 8
 
const unsigned int PeLib::PELIB_IMAGE_SIZEOF_MAX_NAME = 1024
 
const unsigned int PeLib::PELIB_IMAGE_SIZEOF_BASE_RELOCATION = 8
 
const std::size_t PeLib::IMPORT_LIBRARY_MAX_LENGTH = 96
 
const std::size_t PeLib::IMPORT_SYMBOL_MAX_LENGTH = 96
 
const unsigned int PeLib::PELIB_IMAGE_SIZEOF_COFF_SYMBOL = 18
 
const std::size_t PeLib::COFF_SYMBOL_NAME_MAX_LENGTH = 96
 
const std::uint32_t PeLib::PELIB_DELAY_ATTRIBUTE_V2 = 0x01