VirtualBox

Changeset 65240 in vbox for trunk/include/iprt


Ignore:
Timestamp:
Jan 11, 2017 10:39:51 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
112748
Message:

pecoff.h,ldrPE.cpp: New IMAGE_LOAD_CONFIG_DIRECTORY structure in 15002, guard fields are used now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/formats/pecoff.h

    r64204 r65240  
    790790    uint32_t  GuardLongJumpTargetCount;             /**< 0x74 */
    791791    uint32_t  DynamicValueRelocTable;               /**< 0x78 */
    792     uint32_t  HybridMetadataPointer;                /**< 0x7c */
    793     uint32_t  FailFastIndirectProc;                 /**< 0x80 - temporary name, rename when we get symbols */
    794     uint32_t  FailFastPointer;                      /**< 0x84 - temporary name, rename when we get symbols */
    795     uint32_t  UnknownZero1;                         /**< 0x88 - temporary name, rename when we get symbols */
     792    uint32_t  CHPEMetadataPointer;                  /**< 0x7c Not sure when this was renamed from HybridMetadataPointer. */
     793    uint32_t  GuardRFFailureRoutine;                /**< 0x80 */
     794    uint32_t  GuardRFFailureRoutineFunctionPointer; /**< 0x84 */
     795    uint32_t  DynamicValueRelocTableOffset;         /**< 0x88 */
     796    uint16_t  DynamicValueRelocTableSection;        /**< 0x8c */
     797    uint16_t  Reserved2;                            /**< 0x8e */
    796798} IMAGE_LOAD_CONFIG_DIRECTORY32_V7;
    797 AssertCompileSize(IMAGE_LOAD_CONFIG_DIRECTORY32_V7, 0x8c);
     799AssertCompileSize(IMAGE_LOAD_CONFIG_DIRECTORY32_V7, 0x90);
    798800typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V7 *PIMAGE_LOAD_CONFIG_DIRECTORY32_V7;
    799801typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V7 const *PCIMAGE_LOAD_CONFIG_DIRECTORY32_V7;
    800802
    801 typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V7   IMAGE_LOAD_CONFIG_DIRECTORY32;
    802 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32_V7  PIMAGE_LOAD_CONFIG_DIRECTORY32;
    803 typedef PCIMAGE_LOAD_CONFIG_DIRECTORY32_V7 PCIMAGE_LOAD_CONFIG_DIRECTORY32;
     803/** @since  Windows 10 build 15002 (or maybe earlier). */
     804typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32_V8
     805{
     806    uint32_t  Size;                                 /**< 0x00 */
     807    uint32_t  TimeDateStamp;                        /**< 0x04 */
     808    uint16_t  MajorVersion;                         /**< 0x08 */
     809    uint16_t  MinorVersion;                         /**< 0x0a */
     810    uint32_t  GlobalFlagsClear;                     /**< 0x0c */
     811    uint32_t  GlobalFlagsSet;                       /**< 0x10 */
     812    uint32_t  CriticalSectionDefaultTimeout;        /**< 0x14 */
     813    uint32_t  DeCommitFreeBlockThreshold;           /**< 0x18 */
     814    uint32_t  DeCommitTotalFreeThreshold;           /**< 0x1c */
     815    uint32_t  LockPrefixTable;                      /**< 0x20 */
     816    uint32_t  MaximumAllocationSize;                /**< 0x24 */
     817    uint32_t  VirtualMemoryThreshold;               /**< 0x28 */
     818    uint32_t  ProcessHeapFlags;                     /**< 0x2c */
     819    uint32_t  ProcessAffinityMask;                  /**< 0x30 */
     820    uint16_t  CSDVersion;                           /**< 0x34 */
     821    uint16_t  DependentLoadFlags;                   /**< 0x36 */
     822    uint32_t  EditList;                             /**< 0x38 */
     823    uint32_t  SecurityCookie;                       /**< 0x3c */
     824    uint32_t  SEHandlerTable;                       /**< 0x40 */
     825    uint32_t  SEHandlerCount;                       /**< 0x44 */
     826    uint32_t  GuardCFCCheckFunctionPointer;         /**< 0x48 */
     827    uint32_t  GuardCFDispatchFunctionPointer;       /**< 0x4c */
     828    uint32_t  GuardCFFunctionTable;                 /**< 0x50 */
     829    uint32_t  GuardCFFunctionCount;                 /**< 0x54 */
     830    uint32_t  GuardFlags;                           /**< 0x58 */
     831    IMAGE_LOAD_CONFIG_CODE_INTEGRITY CodeIntegrity; /**< 0x5c */
     832    uint32_t  GuardAddressTakenIatEntryTable;       /**< 0x68 */
     833    uint32_t  GuardAddressTakenIatEntryCount;       /**< 0x6c */
     834    uint32_t  GuardLongJumpTargetTable;             /**< 0x70 */
     835    uint32_t  GuardLongJumpTargetCount;             /**< 0x74 */
     836    uint32_t  DynamicValueRelocTable;               /**< 0x78 */
     837    uint32_t  CHPEMetadataPointer;                  /**< 0x7c Not sure when this was renamed from HybridMetadataPointer. */
     838    uint32_t  GuardRFFailureRoutine;                /**< 0x80 */
     839    uint32_t  GuardRFFailureRoutineFunctionPointer; /**< 0x84 */
     840    uint32_t  DynamicValueRelocTableOffset;         /**< 0x88 */
     841    uint16_t  DynamicValueRelocTableSection;        /**< 0x8c */
     842    uint16_t  Reserved2;                            /**< 0x8e */
     843    uint32_t  GuardRFVerifyStackPointerFunctionPointer; /**< 0x90 */
     844    uint32_t  HotPatchTableOffset;                  /**< 0x94 */
     845} IMAGE_LOAD_CONFIG_DIRECTORY32_V8;
     846AssertCompileSize(IMAGE_LOAD_CONFIG_DIRECTORY32_V8, 0x98);
     847typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V8 *PIMAGE_LOAD_CONFIG_DIRECTORY32_V8;
     848typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V8 const *PCIMAGE_LOAD_CONFIG_DIRECTORY32_V8;
     849
     850typedef IMAGE_LOAD_CONFIG_DIRECTORY32_V8   IMAGE_LOAD_CONFIG_DIRECTORY32;
     851typedef PIMAGE_LOAD_CONFIG_DIRECTORY32_V8  PIMAGE_LOAD_CONFIG_DIRECTORY32;
     852typedef PCIMAGE_LOAD_CONFIG_DIRECTORY32_V8 PCIMAGE_LOAD_CONFIG_DIRECTORY32;
    804853
    805854
     
    10131062    uint64_t  GuardLongJumpTargetCount;             /**< 0xb8 */
    10141063    uint64_t  DynamicValueRelocTable;               /**< 0xc0 */
    1015     uint64_t  HybridMetadataPointer;                /**< 0xc8 */
    1016     uint64_t  FailFastIndirectProc;                 /**< 0xd0 - temporary name, rename when we get symbols */
    1017     uint64_t  FailFastPointer;                      /**< 0xd8 - temporary name, rename when we get symbols */
    1018     uint64_t  UnknownZero1;                         /**< 0xe0 - temporary name, rename when we get symbols */
     1064    uint64_t  CHPEMetadataPointer;                  /**< 0xc8 Not sure when this was renamed from HybridMetadataPointer. */
     1065    uint64_t  GuardRFFailureRoutine;                /**< 0xd0 */
     1066    uint64_t  GuardRFFailureRoutineFunctionPointer; /**< 0xd8 */
     1067    uint32_t  DynamicValueRelocTableOffset;         /**< 0xe0 */
     1068    uint16_t  DynamicValueRelocTableSection;        /**< 0xe4 */
     1069    uint16_t  Reserved2;                            /**< 0xe6 */
    10191070} IMAGE_LOAD_CONFIG_DIRECTORY64_V7;
    10201071AssertCompileSize(IMAGE_LOAD_CONFIG_DIRECTORY64_V7, 0xe8);
     
    10221073typedef IMAGE_LOAD_CONFIG_DIRECTORY64_V7 const *PCIMAGE_LOAD_CONFIG_DIRECTORY64_V7;
    10231074
    1024 typedef IMAGE_LOAD_CONFIG_DIRECTORY64_V7   IMAGE_LOAD_CONFIG_DIRECTORY64;
    1025 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64_V7  PIMAGE_LOAD_CONFIG_DIRECTORY64;
    1026 typedef PCIMAGE_LOAD_CONFIG_DIRECTORY64_V7 PCIMAGE_LOAD_CONFIG_DIRECTORY64;
     1075/** @since  Windows 10 build 15002 (or maybe earlier). */
     1076#pragma pack(4) /* Stupid, stupid microsofties! */
     1077typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64_V8
     1078{
     1079    uint32_t  Size;                                 /**< 0x00 */
     1080    uint32_t  TimeDateStamp;                        /**< 0x04 */
     1081    uint16_t  MajorVersion;                         /**< 0x08 */
     1082    uint16_t  MinorVersion;                         /**< 0x0a */
     1083    uint32_t  GlobalFlagsClear;                     /**< 0x0c */
     1084    uint32_t  GlobalFlagsSet;                       /**< 0x10 */
     1085    uint32_t  CriticalSectionDefaultTimeout;        /**< 0x14 */
     1086    uint64_t  DeCommitFreeBlockThreshold;           /**< 0x18 */
     1087    uint64_t  DeCommitTotalFreeThreshold;           /**< 0x20 */
     1088    uint64_t  LockPrefixTable;                      /**< 0x28 */
     1089    uint64_t  MaximumAllocationSize;                /**< 0x30 */
     1090    uint64_t  VirtualMemoryThreshold;               /**< 0x38 */
     1091    uint64_t  ProcessAffinityMask;                  /**< 0x40 */
     1092    uint32_t  ProcessHeapFlags;                     /**< 0x48 */
     1093    uint16_t  CSDVersion;                           /**< 0x4c */
     1094    uint16_t  DependentLoadFlags;                   /**< 0x4e */
     1095    uint64_t  EditList;                             /**< 0x50 */
     1096    uint64_t  SecurityCookie;                       /**< 0x58 */
     1097    uint64_t  SEHandlerTable;                       /**< 0x60 */
     1098    uint64_t  SEHandlerCount;                       /**< 0x68 */
     1099    uint64_t  GuardCFCCheckFunctionPointer;         /**< 0x70 */
     1100    uint64_t  GuardCFDispatchFunctionPointer;       /**< 0x78 */
     1101    uint64_t  GuardCFFunctionTable;                 /**< 0x80 */
     1102    uint64_t  GuardCFFunctionCount;                 /**< 0x88 */
     1103    uint32_t  GuardFlags;                           /**< 0x90 */
     1104    IMAGE_LOAD_CONFIG_CODE_INTEGRITY CodeIntegrity; /**< 0x94 */
     1105    uint64_t  GuardAddressTakenIatEntryTable;       /**< 0xa0 */
     1106    uint64_t  GuardAddressTakenIatEntryCount;       /**< 0xa8 */
     1107    uint64_t  GuardLongJumpTargetTable;             /**< 0xb0 */
     1108    uint64_t  GuardLongJumpTargetCount;             /**< 0xb8 */
     1109    uint64_t  DynamicValueRelocTable;               /**< 0xc0 */
     1110    uint64_t  CHPEMetadataPointer;                  /**< 0xc8 */
     1111    uint64_t  GuardRFFailureRoutine;                /**< 0xd0 */
     1112    uint64_t  GuardRFFailureRoutineFunctionPointer; /**< 0xd8 */
     1113    uint32_t  DynamicValueRelocTableOffset;         /**< 0xe0 */
     1114    uint16_t  DynamicValueRelocTableSection;        /**< 0xe4 */
     1115    uint16_t  Reserved2;                            /**< 0xe6 */
     1116    uint64_t  GuardRFVerifyStackPointerFunctionPointer; /**< 0xe8 */
     1117    uint32_t  HotPatchTableOffset;                  /**< 0xf0 */
     1118} IMAGE_LOAD_CONFIG_DIRECTORY64_V8;
     1119#pragma pack()
     1120AssertCompileSize(IMAGE_LOAD_CONFIG_DIRECTORY64_V8, 0xf4);
     1121typedef IMAGE_LOAD_CONFIG_DIRECTORY64_V8 *PIMAGE_LOAD_CONFIG_DIRECTORY64_V8;
     1122typedef IMAGE_LOAD_CONFIG_DIRECTORY64_V8 const *PCIMAGE_LOAD_CONFIG_DIRECTORY64_V8;
     1123
     1124typedef IMAGE_LOAD_CONFIG_DIRECTORY64_V8   IMAGE_LOAD_CONFIG_DIRECTORY64;
     1125typedef PIMAGE_LOAD_CONFIG_DIRECTORY64_V8  PIMAGE_LOAD_CONFIG_DIRECTORY64;
     1126typedef PCIMAGE_LOAD_CONFIG_DIRECTORY64_V8 PCIMAGE_LOAD_CONFIG_DIRECTORY64;
    10271127
    10281128/** @} */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette