13#ifndef APPLE_MACHO_IMAGE_H
14#define APPLE_MACHO_IMAGE_H
16#define MACH_CPU_ARCH_ABI64 BIT24
17#define MACH_CPU_ARCH_ABI64_32 BIT25
22#define MACH_CPU_SUBTYPE_MASK 0xFF000000U
23#define MACH_CPU_SUBTYPE_LIB64 BIT17
25#define MACH_CPU_SUBTYPE_INTEL_MODEL_SHIFT 4U
26#define MACH_CPU_SUBTYPE_INTEL_FAMILY_MAX 0x0FU
27#define MACH_CPU_SUBTYPE_INTEL_MODEL_ALL 0U
29#define MACH_CPU_SUBTYPE_INTEL(f, Model) \
30 ((f) + ((Model) << MACH_CPU_SUBTYPE_INTEL_MODEL_SHIFT))
32#define MACH_CPU_SUBTYPE_INTEL_FAMILY(Identifier) \
33 ((Identifier) & MACH_CPU_SUBTYPE_INTEL_FAMILY_MAX)
35#define MACH_CPU_SUBTYPE_INTEL_MODEL(Identifier) \
36 ((Identifier) >> MACH_CPU_SUBTYPE_INTEL_MODEL_SHIFT)
38#define FORMALIZE_CPU_SUBTYPE(CpuSubtype) ((CpuSubtype) & ~CPU_SUBTYPE_MASK)
40#define MACH_CPU_TYPE_64(CpuType) ((CpuType) | MACH_CPU_ARCH_ABI64)
42#define MACH_CPU_TYPE_64_32(CpuType) ((CpuType) | MACH_CPU_ARCH_ABI64_32)
49#if !defined (MACH_LITTLE_ENDIAN) && !defined (MACH_BIG_ENDIAN)
50 #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
51#define MACH_LITTLE_ENDIAN
366#define MACH_LC_REQUIRE_DYLD BIT31
370#define MACH_LOAD_COMMAND_SEGMENT 1U
374#define MACH_LOAD_COMMAND_SYMTAB 2U
378#define MACH_LOAD_COMMAND_SYMSEG 3U
382#define MACH_LOAD_COMMAND_THREAD 4U
386#define MACH_LOAD_COMMAND_UNIX_THREAD 5U
390#define MACH_LOAD_COMMAND_LOAD_FIXED_VM_LIB 6U
394#define MACH_LOAD_COMMAND_IDENTIFICATION_VM_LIB 7U
398#define MACH_LOAD_COMMAND_IDENTIFICATION 8U
402#define MACH_LOAD_COMMAND_FIXED_VM_FILE 9U
406#define MACH_LOAD_COMMAND_PRE_PAGE 10U
410#define MACH_LOAD_COMMAND_DYSYMTAB 11U
414#define MACH_LOAD_COMMAND_LOAD_DYLIB 12U
418#define MACH_LOAD_COMMAND_IDENTITY_DYLIB 13U
422#define MACH_LOAD_COMMAND_LOAD_DYLD 14U
426#define MACH_LOAD_COMMAND_IDENTIFICATION_DYLD 15U
430#define MACH_LOAD_COMMAND_PREBOUNT_SYLIB 16U
434#define MACH_LOAD_COMMAND_ROUTINES 17U
438#define MACH_LOAD_COMMAND_SUB_FRAMEWORK 18U
442#define MACH_LOAD_COMMAND_SUB_UMBRELLA 19U
446#define MACH_LOAD_COMMAND_SUB_CLIENT 20U
450#define MACH_LOAD_COMMAND_SUB_LIBRARY 21U
454#define MACH_LOAD_COMMAND_TWO_LEVEL_HINTS 22U
458#define MACH_LOAD_COMMAND_PREBIND_CHECKSUM 23U
463#define MACH_LOAD_COMMAND_LLOAD_WEAK_DYLIB (24U | MACH_LC_REQUIRE_DYLD)
467#define MACH_LOAD_COMMAND_SEGMENT_64 25U
471#define MACH_LOAD_COMMAND_ROUTINES_64 26U
475#define MACH_LOAD_COMMAND_UUID 27U
479#define MACH_LOAD_COMMAND_RUN_PATH (28U | MACH_LC_REQUIRE_DYLD)
483#define MACH_LOAD_COMMAND_CODE_SIGNATURE 29U
487#define MACH_LOAD_COMMAND_SEGMENT_SPLIT_INFO 30U
491#define MACH_LOAD_COMMAND_REEXPORT_DYLIB (31U | MACH_LC_REQUIRE_DYLD)
495#define MACH_LOAD_COMMAND_LAZY_LOAD_DYLIB 32U
499#define MACH_LOAD_COMMAND_ENCRYPTION_INFO 33U
503#define MACH_LOAD_COMMAND_DYLD_INFO 34U
507#define MACH_LOAD_COMMAND_DYLD_INFO_ONLY (34U | MACH_LC_REQUIRE_DYLD)
511#define MACH_LOAD_COMMAND_LOAD_UPWARD_DYLIB (35U | MACH_LC_REQUIRE_DYLD)
515#define MACH_LOAD_COMMAND_VERSION_MIN_MAC_OS_X 36U
519#define MACH_LOAD_COMMAND_VERSION_MIN_IPHONE_OS 37U
523#define MACH_LOAD_COMMAND_FUNCTION_STARTS 38U
527#define MACH_LOAD_COMMAND_DYLD_ENVIRONMENT 39U
531#define MACH_LOAD_COMMAND_MAIN (40U | MACH_LC_REQUIRE_DYLD)
535#define MACH_LOAD_COMMAND_DATA_IN_CODE 41U
539#define MACH_LOAD_COMMAND_SOURCE_VERSION 42U
543#define MACH_LOAD_COMMAND_DYLIB_CODE_SIGN_DRS 43U
547#define MACH_LOAD_COMMAND_ENCRYPTION_INFO_64 44U
551#define MACH_LOAD_COMMAND_LINKER_OPTION 45U
555#define MACH_LOAD_COMMAND_LINKER_OPTIMIZATION_HINT 46U
559#define MACH_LOAD_COMMAND_VERSION_MIN_TV_OS 47U
563#define MACH_LOAD_COMMAND_VERSION_MIN_WATCH_OS 48U
567#define MACH_LOAD_COMMAND_NOTE 49U
571#define MACH_LOAD_COMMAND_BUILD_VERSION 50U
575#define MACH_LOAD_COMMAND_DYLD_EXPORTS_TRIE (51U | MACH_LC_REQUIRE_DYLD)
579#define MACH_LOAD_COMMAND_DYLD_CHAINED_FIXUPS (52U | MACH_LC_REQUIRE_DYLD)
583#define MACH_LOAD_COMMAND_FILESET_ENTRY (53U | MACH_LC_REQUIRE_DYLD)
587#define MACH_LOAD_COMMAND_HDR_ \
588 MACH_LOAD_COMMAND_TYPE CommandType; \
592#define NEXT_MACH_LOAD_COMMAND(Command) \
593 ((MACH_LOAD_COMMAND *)((UINTN)(Command) + (Command)->CommandSize))
607#define MACH_SEGMENT_FLAG_HIGH_VIRTUAL_MEMORY BIT0
612#define MACH_SEGMENT_FLAG_FIXED_VM_LIB BIT1
617#define MACH_SEGMENT_FLAG_NO_RELOCATION BIT2
623#define MACH_SEGMENT_FLAG_PROTECTED_VERSION_1 BIT3
625#define MACH_SEGMENT_VM_PROT_NONE 0U
627#define MACH_SEGMENT_VM_PROT_READ BIT0
628#define MACH_SEGMENT_VM_PROT_WRITE BIT1
629#define MACH_SEGMENT_VM_PROT_EXECUTE BIT2
759#define MACH_SECTION_ATTRIBUTES_SYSYTEM 0x00FFFF00U
763#define MACH_SECTION_ATTRIBUTES_USER 0xFF000000U
767#define MACH_SECTION_ATTRIBUTE_LOCAL_RELOCATION BIT8
771#define MACH_SECTION_ATTRIBUTE_EXTERNAL_RELOCATION BIT9
775#define MACH_SECTION_ATTRIBUTE_SOME_INSTRUCTIONS BIT10
783#define MACH_SECTION_TYPE_MASK 0x000000FFU
784#define MACH_SECTION_ATTRIBUTES_MASK 0xFFFFFF00U
796#define MACH_SECTION_ATTRIBUTE_DEBUG BIT25
800#define MACH_SECTION_ATTRIBUTE_SELF_MODIFYING_CODE BIT26
804#define MACH_SECTION_ATTRIBUTE_LIVE_SUPPORT BIT27
808#define MACH_SECTION_ATTRIBUTE_NO_DEAD_STRIP BIT28
813#define MACH_SECTION_ATTRIBUTE_STRIP_STATIC_SYMBOLS BIT29
818#define MACH_SECTION_ATTRIBUTE_NO_TOC BIT30
822#define MACH_SECTION_ATTRIBUTE_PURE_INSTRUCTIONS BIT31
856 CHAR8 SectionName[16];
857 CHAR8 SegmentName[16];
862 UINT32 RelocationsOffset;
863 UINT32 NumRelocations;
873 CHAR8 SectionName[16];
874 CHAR8 SegmentName[16];
879 UINT32 RelocationsOffset;
880 UINT32 NumRelocations;
892#define NEXT_MACH_SEGMENT(Segment) \
893 (MACH_SEGMENT_COMMAND *)((UINTN)(Segment) + (Segment)->Command.Size)
911 CHAR8 SegmentName[16];
912 UINT32 VirtualAddress;
923#define NEXT_MACH_SEGMENT_64(Segment) \
924 (MACH_SEGMENT_COMMAND_64 *)((UINTN)(Segment) + (Segment)->Hdr.Size)
936 CHAR8 SegmentName[16];
937 UINT64 VirtualAddress;
1103#define MACH_X86_THREAD_STATE_MAX 614
1159#define MACH_VALID_THREAD_STATE_FLAVOR(Flavor) \
1160 (((Flavor) == MachX86ThreadState32) \
1161 || ((Flavor) == MachX86FloatState32) \
1162 || ((Flavor) == MachX86ExceptionState32) \
1163 || ((Flavor) == MachX86DebugState32) \
1164 || ((Flavor) == MachX86ThreadState64) \
1165 || ((Flavor) == MachX86FloatState64) \
1166 || ((Flavor) == MachX86ExceptionState64) \
1167 || ((Flavor) == MachX86DebugState64) \
1168 || ((Flavor) == MachX86ThreadState) \
1169 || ((Flavor) == MachX86FloatState) \
1170 || ((Flavor) == MachX86ExceptionState) \
1171 || ((Flavor) == MachX86DebugState) \
1172 || ((Flavor) == MachX86AvxState32) \
1173 || ((Flavor) == MachX86AvxState64) \
1174 || ((Flavor) == MachX86AvxState) \
1175 || ((Flavor) == MachX86Avx512State32) \
1176 || ((Flavor) == MachX86Avx512State64) \
1177 || ((Flavor) == MachX86Avx512State) \
1178 || ((Flavor) == MachThreadStateNone))
1205 UINT32 NumThreadStates;
1206 UINT32 ThreadState[];
1223 UINT32 InitRoutineAddress;
1227 UINT32 InitModuleIndex;
1244 UINT64 InitiRoutineAddress;
1248 UINT64 InitModuleIndex;
1264 UINT32 SymbolsOffset;
1266 UINT32 StringsOffset;
1329 UINT32 LocalSymbolsIndex;
1330 UINT32 NumLocalSymbols;
1332 UINT32 ExternalSymbolsIndex;
1333 UINT32 NumExternalSymbols;
1335 UINT32 UndefinedSymbolsIndex;
1336 UINT32 NumUndefinedSymbols;
1350 UINT32 TableOfContentsFileOffset;
1354 UINT32 TableOfContentsNumEntries;
1366 UINT32 ModuleTableFileOffset;
1367 UINT32 ModuleTableNumEntries;
1382 UINT32 ReferencedSymbolTableFileOffset;
1386 UINT32 ReferencedSymbolTableNumEntries;
1402 UINT32 IndirectSymbolsOffset;
1406 UINT32 NumIndirectSymbols;
1439 UINT32 ExternalRelocationsOffset;
1443 UINT32 NumExternalRelocations;
1451 UINT32 LocalRelocationsOffset;
1452 UINT32 NumOfLocalRelocations;
1462#define MACH_INDIRECT_SYMBOL_LOCAL 0x80000000U
1463#define MACH_INDIRECT_SYMBOL_ABS 0x40000000U
1482 UINT32 SubImagesIndex : 8;
1483 UINT32 TableOfContentsIndex : 24;
1619#define MACH_PLATFORM_MACOS 1U
1620#define MACH_PLATFORM_IOS 2U
1621#define MACH_PLATFORM_TVOS 3U
1622#define MACH_PLATFORM_WATCHOS 4U
1623#define MACH_PLATFORM_BRIDGEOS 5U
1624#define MACH_PLATFORM_MACCATALYST 6U
1625#define MACH_PLATFORM_IOSSIMULATOR 7U
1626#define MACH_PLATFORM_TVOSSIMULATOR 8U
1627#define MACH_PLATFORM_WATCHOSSIMULATOR 9U
1628#define MACH_PLATFORM_DRIVERKIT 10U
1633#define MACH_TOOL_CLANG 1U
1634#define MACH_TOOL_SWIFT 2U
1635#define MACH_TOOL_LD 3U
1658 UINT32 RebaseOffset;
1673 UINT32 BindingInfoOffset;
1674 UINT32 BindingInfoSize;
1690 UINT32 WeakBindingInfoOffset;
1691 UINT32 WeakBindingInfoSize;
1704 UINT32 LazyBindingInfoOffset;
1705 UINT32 LazyBindingInfoSize;
1738 UINT32 ExportSymbolsOffset;
1739 UINT32 ExportSymbolsSize;
1790 UINT32 HeaderAddress;
1801 UINT64 VirtualAddress;
1823 UINT32 FixupsVersion;
1824 UINT32 StartsOffset;
1825 UINT32 ImportsOffset;
1826 UINT32 SymbolsOffset;
1827 UINT32 ImportsCount;
1828 UINT32 ImportsFormat;
1829 UINT32 SymbolsFormat;
1837 UINT32 SegInfoOffset[];
1845 UINT16 PointerFormat;
1846 UINT64 SegmentOffset;
1847 UINT32 MaxValidPointer;
1894#define MACH_SOURCE_VERSION_A_MASK 0xFFFFFF0000000000U
1895#define MACH_SOURCE_VERSION_B_MASK 0x000000FFC0000000U
1896#define MACH_SOURCE_VERSION_V_MASK 0x000000003FF00000U
1897#define MACH_SOURCE_VERSION_D_MASK 0x00000000000FFC00U
1898#define MACH_SOURCE_VERSION_E_MASK 0x00000000000003FFU
1900#define MACH_SOURCE_VERSION_A(Version) (((Version) & MACH_SOURCE_VERSION_A_MASK) >> 40U)
1901#define MACH_SOURCE_VERSION_B(Version) (((Version) & MACH_SOURCE_VERSION_B_MASK) >> 30U)
1902#define MACH_SOURCE_VERSION_C(Version) (((Version) & MACH_SOURCE_VERSION_V_MASK) >> 20U)
1903#define MACH_SOURCE_VERSION_D(Version) (((Version) & MACH_SOURCE_VERSION_D_MASK) >> 10U)
1904#define MACH_SOURCE_VERSION_E(Version) ((Version) & MACH_SOURCE_VERSION_E_MASK)
1953#undef MACH_LOAD_COMMAND_HDR_
2002#define MACH_HEADER_FLAG_NO_UNDEFINED_REFERENCES BIT0
2003#define MACH_HEADER_FLAG_INCREMENTAL_LINK BIT1
2004#define MACH_HEADER_FLAG_DYNAMIC_LINKER_LINK BIT2
2005#define MACH_HEADER_FLAG_BINARY_DATA_LOAD BIT3
2006#define MACH_HEADER_FLAG_PREBOUND BIT4
2007#define MACH_HEADER_FLAG_SPLIT_SEGMENTS BIT5
2008#define MACH_HEADER_FLAG_LAZY_INITIALIZATION BIT6
2009#define MACH_HEADER_FLAG_TWO_LEVEL BIT7
2010#define MACH_HEADER_FLAG_FORCE_FLAT BIT8
2011#define MACH_HEADER_FLAG_NO_MULTIPLE_DEFINITIONS BIT9
2012#define MACH_HEADER_FLAG_NO_FIX_PREBINDING BIT10
2013#define MACH_HEADER_FLAG_PREBINDABLE BIT11
2014#define MACH_HEADER_FLAG_ALL_MODULES_BOUND BIT12
2015#define MACH_HEADER_FLAG_SUBSECTIONS_VIA_SYNBOLS BIT13
2016#define MACH_HEADER_FLAG_CANONICAL BIT14
2017#define MACH_HEADER_FLAG_WEAK_DEFINES BIT15
2018#define MACH_HEADER_FLAG_BINDS_TO_WEAK BIT16
2019#define MACH_HEADER_FLAG_ALLOW_STACK_EXECUTION BIT17
2020#define MACH_HEADER_FLAG_ROOT_SAFE BIT18
2021#define MACH_HEADER_FLAG_SET_UID_SAFE BIT19
2022#define MACH_HEADER_FLAG_NO_REEXPORTED_DYLIBS BIT20
2023#define MACH_HEADER_FLAG_POSITION_INDEPENDENT_EXECUTABLE BIT21
2024#define MACH_HEADER_FLAG_DEAD_STRIPPABLE_DYLIB BIT22
2025#define MACH_HEADER_FLAG_HAS_TLV_DESCRIPTORS BIT23
2026#define MACH_HEADER_FLAG_NO_HEAP_EXECUTION BIT24
2027#define MACH_HEADER_FLAG_APP_EXTENSION_SAFE BIT25
2028#define MACH_HEADER_FLAG_NLIST_OUTOFSYNC_WITH_DYLDINFO BIT26
2029#define MACH_HEADER_FLAG_SIM_SUPPORT BIT27
2030#define MACH_HEADER_FLAG_DYLIB_IN_CACHE BIT31
2037#define MACH_HEADER_SIGNATURE 0xFEEDFACE
2038#define MACH_HEADER_INVERT_SIGNATURE 0xCEFAEDFE
2050 UINT32 CommandsSize;
2058#define MACH_HEADER_64_SIGNATURE 0xFEEDFACF
2059#define MACH_HEADER_64_INVERT_SIGNATURE 0xCFFAEDFE
2071 UINT32 CommandsSize;
2142#define MACH_N_TYPE_STAB 0xE0U
2144#define MACH_N_TYPE_PEXT 0x10U
2145#define MACH_N_TYPE_TYPE 0x0EU
2146#define MACH_N_TYPE_EXT 0x01U
2159#define MACH_N_TYPE_UNDF 0x0U
2160#define MACH_N_TYPE_ABS 0x2U
2161#define MACH_N_TYPE_SECT 0xEU
2162#define MACH_N_TYPE_PBUD 0xCU
2163#define MACH_N_TYPE_INDR 0xAU
2200#define MACH_N_GSYM 0x20U
2201#define MACH_N_FNAME 0x22U
2202#define MACH_N_FUN 0x24U
2203#define MACH_N_STSYM 0x26U
2204#define MACH_N_LCSYM 0x28U
2205#define MACH_N_BNSYM 0x2EU
2206#define MACH_N_AST 0x32U
2207#define MACH_N_OPT 0x3CU
2208#define MACH_N_RSYM 0x40U
2209#define MACH_N_SLINE 0x44U
2210#define MACH_N_ENSYM 0x4EU
2211#define MACH_N_SSYM 0x60U
2212#define MACH_N_SO 0x64U
2213#define MACH_N_OSO 0x66U
2214#define MACH_N_LSYM 0x80U
2215#define MACH_N_BINCL 0x82U
2216#define MACH_N_SOL 0x84U
2217#define MACH_N_PARAMS 0x86U
2218#define MACH_N_VERSION 0x88U
2219#define MACH_N_OLEVEL 0x8AU
2220#define MACH_N_PSYM 0xA0U
2221#define MACH_N_EINCL 0xA2U
2222#define MACH_N_ENTRY 0xA4U
2223#define MACH_N_LBRAC 0xC0U
2224#define MACH_N_EXCL 0xC2U
2225#define MACH_N_RBRAC 0xE0U
2226#define MACH_N_BCOMM 0xE2U
2227#define MACH_N_ECOMM 0xE4U
2228#define MACH_N_ECOML 0xE8U
2229#define MACH_N_LENG 0xFEU
2241#define MACH_N_NO_DEAD_STRIP 0x0020U
2247#define MACH_N_DESC_DISCARDED 0x0020U
2253#define MACH_N_WEAK_REF 0x0040U
2260#define MACH_N_WEAK_DEF 0x0080U
2266#define MACH_N_REF_TO_WEAK 0x0080U
2271#define MACH_N_ARM_THUMB_DEF 0x0008U
2278#define MACH_N_SYMBOL_RESOLVER 0x0100U
2283#define MACH_N_ALT_ENTRY 0x0200U
2288#define MACH_N_PC 0x30U
2305 UINT32 SymbolNumber : 24;
2307 UINT32 PcRelative : 1;
2313#define MACH_RELOC_ABSOLUTE 0U
2380#define MACH_RELOC_SCATTERED 0x80000000U
2383 #if defined (MACH_LITTLE_ENDIAN)
2384 UINT32 Address : 24;
2388 UINT32 PcRelative : 1;
2389 UINT32 Scattered : 1;
2392 #elif defined (MACH_BIG_ENDIAN)
2393 UINT32 Scattered : 1;
2394 UINT32 PcRelative : 1;
2397 UINT32 Address : 24;
2409 #error "No endianness information was provided!"
#define MACH_CPU_TYPE_64(CpuType)
INT32 MACH_CPU_THREADTYPE
#define MACH_CPU_TYPE_64_32(CpuType)
#define MACH_LOAD_COMMAND_HDR_
@ MachX86ExceptionState32
@ MachX86ExceptionState64
UINT32 MACH_HEADER_FILE_TYPE
UINT32 MACH_SEGMENT_FLAGS
#define MACH_CPU_SUBTYPE_INTEL(f, Model)
@ MachGenericRelocSectDiff
@ MachGenericRelocVanilla
@ MachGenericRelocThreadLocalVariables
thread local variables
@ MachGenericRelocLocalSectDiff
@ MachGenericRelocPreboundLazyPointer
prebound lazy pointer
@ MACH_DYLD_CHAINED_PTR_START_MULTI
used in page_start[] to denote a page which has multiple starts
@ MACH_DYLD_CHAINED_PTR_START_NONE
used in page_start[] to denote a page with no fixups
@ MACH_DYLD_CHAINED_PTR_START_LAST
used in chain_starts[] to denote last start in list for page
@ MachX8664RelocUnsigned
for absolute addresses
@ MachX8664RelocGotLoad
a MOVQ load of a GOT entry
@ MachX8664RelocSigned
for signed 32-bit displacement
@ MachX8664RelocThreadLocalVariable
for thread local variables
@ MachX8664RelocSubtractor
@ MachX8664RelocGot
other GOT references
@ MachSectionType4ByteLiterals
@ MachSectionTypeGigabyteZeroFill
@ MachSectionTypeModTerminateFunctionPointers
@ MachSectionTypeThreadLocalRegular
@ MachSectionTypeThreadVariablePointers
@ MachSectionTypeNonLazySymbolPointers
@ MachSectionTypeCoalesced
@ MachSectionTypeDtraceObjectFormat
@ MachSectionTypeInterposing
@ MachSectionTypeModInitalizeFunctionPointers
@ MachSectionTypeThreadLocalInitializeFunctionOffsets
@ MachSectionType16ByteLiterals
@ MachSectionTypeThreadLocalInitializeFunctionPointers
@ MachSectionType8ByteLiterals
@ MachSectionTypeLazySymbolPointers
@ MachSectionTypeZeroFill
@ MachSectionTypeSymbolStubs
@ MachSectionTypeThreadLocalVariables
@ MachSectionTypeCStringLiterals
@ MachSectionTypeLiteralPointers
@ MachSectionTypeThreadLocalZeroFill
@ MachSectionTypeLazyDylibSymbolPointers
@ MACH_DYLD_CHAINED_PTR_ARM64E_OFFSET
old name
@ MACH_DYLD_CHAINED_PTR_32_FIRMWARE
@ MACH_DYLD_CHAINED_PTR_ARM64E_KERNEL
stride 4, unauth target is vm offset
@ MACH_DYLD_CHAINED_PTR_32_CACHE
@ MACH_DYLD_CHAINED_PTR_ARM64E_FIRMWARE
stride 4, unauth target is vmaddr
@ MACH_DYLD_CHAINED_PTR_ARM64E_USERLAND
stride 8, unauth target is vm offset
@ MACH_DYLD_CHAINED_PTR_64
target is vmaddr
@ MACH_DYLD_CHAINED_PTR_32
@ MACH_DYLD_CHAINED_PTR_ARM64E_USERLAND24
stride 8, unauth target is vm offset, 24-bit bind
@ MACH_DYLD_CHAINED_PTR_ARM64E
stride 8, unauth target is vmaddr
@ MACH_DYLD_CHAINED_PTR_64_OFFSET
target is vm offset
@ MACH_DYLD_CHAINED_PTR_64_KERNEL_CACHE
@ MACH_DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE
stride 1, x86_64 kernel caches
UINT32 MACH_LOAD_COMMAND_TYPE
@ MachCpuFamilyArmLightningThunder
@ MachCpuFamilyArmHurricane
@ MachCpuFamilyArmTwister
@ MachCpuFamilyIntelMerom
@ MachCpuFamilyIntelPenryn
@ MachCpuFamilyIntelSandyBridge
@ MachCpuFamilyIntelCoffeeLake
@ MachCpuFamilyIntelYonah
@ MachCpuFamilyArmTyphoon
@ MachCpuFamilyIntelCometLake
@ MachCpuFamilyArmVortexTempest
@ MachCpuFamilyIntelCore2
@ MachCpuFamilyIntelSkylake
@ MachCpuFamilyArmCyclone
@ MachCpuFamilyIntelHaswell
@ MachCpuFamilyIntelBroadwell
@ MachCpuFamilyIntelNehalem
@ MachCpuFamilyIntelIvyBridge
@ MachCpuFamilyIntelIceLake
@ MachCpuFamilyArmMonsoonMistral
@ MachCpuFamilyIntelWestmere
@ MachCpuFamilyIntelKabyLake
@ MachHeaderFileTypeExecute
@ MachHeaderFileTypeDynamicLinker
@ MachHeaderFileTypeKextBundle
@ MachHeaderFileTypeBundle
@ MachHeaderFileTypeFixedVmLib
@ MachHeaderFileTypeDylib
@ MachHeaderFileTypeFileSet
@ MachHeaderFileTypeDynamicLinkerStub
@ MachHeaderFileTypeObject
@ MachHeaderFileTypePreload
@ MachCpuSubtypeMipsR3000
@ MachCpuSubtypePowerPc970
@ MachCpuSubtypeBigEndian
@ MachCpuSubtypeArmXscale
@ MachCpuSubtypePowerPc620
@ MachCpuSubtypePowerPc7400
@ MachCpuSubtypePentium3Xeon
@ MachCpuSubtypeMc68030Only
@ MachCpuSubtypePentiumPro
@ MachCpuSubtypeArm6432All
@ MachCpuSubtypePowerPc602
@ MachCpuSubtypeMipsR2000a
@ MachCpuSubtypeMipsR2000
@ MachCpuSubtypePowerPc604
@ MachCpuSubtypeMipsR2600
@ MachCpuSubtypePentium4M
@ MachCpuSubtypeMipsR3000a
@ MachCpuSubtypePentium3M
@ MachCpuSubtypeHppa7100Lc
@ MachCpuSubtypePowerPc603e
@ MachCpuSubtypePowerPc7450
@ MachCpuSubtypePowerPc603ev
@ MachCpuSubtypePowerPc603
@ MachCpuSubtypeCeleronMobile
@ MachCpuSubtypeArm6432V8
@ MachCpuSubtypePowerPcAll
@ MachCpuSubtypeMipsR2800
@ MachCpuSubtypeMc98000All
@ MachCpuSubtypePowerPc750
@ MachCpuSubtypeLittleEndian
@ MachCpuSubtypeMipsR2300
@ MachCpuSubtypePowerPc601
@ MachCpuSubtypePentium3M3
@ MachCpuSubtypeMc88000All
@ MachCpuSubtypePentium3M5
@ MachCpuSubtypePowerPc604e
UINT8 Checksum
All 32 bits added together have to equal 1.
DMG_SIZE_DEVICE_PATH Size
MACH_LOAD_COMMAND_STRING Name
UINT32 CompatibilityVersion
UINT32 MinorVersion
library's minor version number
MACH_LOAD_COMMAND_STRING Name
library's target pathname
UINT32 HeaderAddress
library's header address
UINT32 Address32
pointer to the string
UINT32 Offset
offset to the string