fixupchains

package
v1.1.193 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DcpArm64eIsAuth

func DcpArm64eIsAuth(ptr uint64) bool

func DcpArm64eIsBind

func DcpArm64eIsBind(ptr uint64) bool

func DcpArm64eIsRebase

func DcpArm64eIsRebase(ptr uint64) bool

func DcpArm64eNext

func DcpArm64eNext(ptr uint64) uint64

func Generic32IsBind

func Generic32IsBind(ptr uint32) bool

func Generic32Next

func Generic32Next(ptr uint32) uint64

func Generic64IsBind

func Generic64IsBind(ptr uint64) bool

func Generic64Next

func Generic64Next(ptr uint64) uint64

func KeyName

func KeyName(keyVal uint64) string

KeyName returns the chained pointer's key name

Types

type Bind

type Bind interface {
	Name() string
	Offset() uint64
	Ordinal() uint64
	Addend() uint64
	Raw() uint64
	String(baseAddr ...uint64) string
}

type DCPtrKind

type DCPtrKind uint16

DCPtrKind are values for dyld_chained_starts_in_segment.pointer_format

const (
	DYLD_CHAINED_PTR_ARM64E              DCPtrKind = 1 // stride 8, unauth target is vmaddr
	DYLD_CHAINED_PTR_64                  DCPtrKind = 2 // target is vmaddr
	DYLD_CHAINED_PTR_32                  DCPtrKind = 3
	DYLD_CHAINED_PTR_32_CACHE            DCPtrKind = 4
	DYLD_CHAINED_PTR_32_FIRMWARE         DCPtrKind = 5
	DYLD_CHAINED_PTR_64_OFFSET           DCPtrKind = 6 // target is vm offset
	DYLD_CHAINED_PTR_ARM64E_OFFSET       DCPtrKind = 7 // old name
	DYLD_CHAINED_PTR_ARM64E_KERNEL       DCPtrKind = 7 // stride 4, unauth target is vm offset
	DYLD_CHAINED_PTR_64_KERNEL_CACHE     DCPtrKind = 8
	DYLD_CHAINED_PTR_ARM64E_USERLAND     DCPtrKind = 9  // stride 8, unauth target is vm offset
	DYLD_CHAINED_PTR_ARM64E_FIRMWARE     DCPtrKind = 10 // stride 4, unauth target is vmaddr
	DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE DCPtrKind = 11 // stride 1, x86_64 kernel caches
	DYLD_CHAINED_PTR_ARM64E_USERLAND24   DCPtrKind = 12 // stride 8, unauth target is vm offset, 24-bit bind
	DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE DCPtrKind = 13 // stride 8, regular/auth targets both vm offsets.  Only A keys supported
)

type DCPtrStart

type DCPtrStart uint16
const (
	DYLD_CHAINED_PTR_START_NONE  DCPtrStart = 0xFFFF // used in page_start[] to denote a page with no fixups
	DYLD_CHAINED_PTR_START_MULTI DCPtrStart = 0x8000 // used in page_start[] to denote a page which has multiple starts
	DYLD_CHAINED_PTR_START_LAST  DCPtrStart = 0x8000 // used in chain_starts[] to denote last start in list for page
)

type DCSymbolsFormat

type DCSymbolsFormat uint32
const (
	DC_SFORMAT_UNCOMPRESSED    DCSymbolsFormat = 0
	DC_SFORMAT_ZLIB_COMPRESSED DCSymbolsFormat = 1
)

type DcfImport

type DcfImport struct {
	Name string
	Import
}

func (DcfImport) String

func (i DcfImport) String() string

type DyldChainedFixups

type DyldChainedFixups struct {
	DyldChainedFixupsHeader
	PointerFormat DCPtrKind
	Starts        []DyldChainedStarts
	Imports       []DcfImport
	// contains filtered or unexported fields
}

func NewChainedFixups

func NewChainedFixups(lcdat *bytes.Reader, sr *types.MachoReader, bo binary.ByteOrder) *DyldChainedFixups

NewChainedFixups creates a new DyldChainedFixups instance

func (*DyldChainedFixups) IsBind

func (dcf *DyldChainedFixups) IsBind(addr uint64) (*DcfImport, int64, bool)

func (*DyldChainedFixups) IsRebase

func (dcf *DyldChainedFixups) IsRebase(addr, preferredLoadAddress uint64) (uint64, bool)

func (*DyldChainedFixups) Parse

func (dcf *DyldChainedFixups) Parse() (*DyldChainedFixups, error)

Parse parses a LC_DYLD_CHAINED_FIXUPS load command

func (*DyldChainedFixups) ParseStarts

func (dcf *DyldChainedFixups) ParseStarts() error

ParseStarts parses the DyldChainedStartsInSegment(s)

type DyldChainedFixupsHeader

type DyldChainedFixupsHeader struct {
	FixupsVersion uint32          // 0
	StartsOffset  uint32          // offset of DyldChainedStartsInImage in chain_data
	ImportsOffset uint32          // offset of imports table in chain_data
	SymbolsOffset uint32          // offset of symbol strings in chain_data
	ImportsCount  uint32          // number of imported symbol names
	ImportsFormat ImportFormat    // DYLD_CHAINED_IMPORT*
	SymbolsFormat DCSymbolsFormat // 0 => uncompressed, 1 => zlib compressed
}

DyldChainedFixupsHeader object is the header of the LC_DYLD_CHAINED_FIXUPS payload

type DyldChainedImport

type DyldChainedImport uint32

DYLD_CHAINED_IMPORT

func (DyldChainedImport) Addend

func (d DyldChainedImport) Addend() uint64

func (DyldChainedImport) LibOrdinal

func (d DyldChainedImport) LibOrdinal() int

func (DyldChainedImport) NameOffset

func (d DyldChainedImport) NameOffset() uint64

func (DyldChainedImport) String

func (i DyldChainedImport) String() string

func (DyldChainedImport) WeakImport

func (d DyldChainedImport) WeakImport() bool

type DyldChainedImport64

type DyldChainedImport64 uint64

func (DyldChainedImport64) Addend

func (d DyldChainedImport64) Addend() uint64

func (DyldChainedImport64) LibOrdinal

func (d DyldChainedImport64) LibOrdinal() int

func (DyldChainedImport64) NameOffset

func (d DyldChainedImport64) NameOffset() uint64

func (DyldChainedImport64) Reserved

func (d DyldChainedImport64) Reserved() uint64

func (DyldChainedImport64) String

func (i DyldChainedImport64) String() string

func (DyldChainedImport64) WeakImport

func (d DyldChainedImport64) WeakImport() bool

type DyldChainedImportAddend

type DyldChainedImportAddend struct {
	Import    DyldChainedImport
	AddendVal int32
}

DYLD_CHAINED_IMPORT_ADDEND

func (DyldChainedImportAddend) Addend

func (d DyldChainedImportAddend) Addend() uint64

func (DyldChainedImportAddend) LibOrdinal

func (d DyldChainedImportAddend) LibOrdinal() int

func (DyldChainedImportAddend) NameOffset

func (d DyldChainedImportAddend) NameOffset() uint64

func (DyldChainedImportAddend) String

func (i DyldChainedImportAddend) String() string

func (DyldChainedImportAddend) WeakImport

func (d DyldChainedImportAddend) WeakImport() bool

type DyldChainedImportAddend64

type DyldChainedImportAddend64 struct {
	Import    DyldChainedImport64
	AddendVal uint64
}

DYLD_CHAINED_IMPORT_ADDEND64

func (DyldChainedImportAddend64) Addend

func (d DyldChainedImportAddend64) Addend() uint64

func (DyldChainedImportAddend64) LibOrdinal

func (d DyldChainedImportAddend64) LibOrdinal() int

func (DyldChainedImportAddend64) NameOffset

func (d DyldChainedImportAddend64) NameOffset() uint64

func (DyldChainedImportAddend64) String

func (i DyldChainedImportAddend64) String() string

func (DyldChainedImportAddend64) WeakImport

func (d DyldChainedImportAddend64) WeakImport() bool

type DyldChainedPtr32Bind

type DyldChainedPtr32Bind struct {
	Fixup   uint64
	Pointer uint32
	Import  string
}

DYLD_CHAINED_PTR_32

func (DyldChainedPtr32Bind) Addend

func (d DyldChainedPtr32Bind) Addend() uint64

func (DyldChainedPtr32Bind) Bind

func (d DyldChainedPtr32Bind) Bind() uint32

func (DyldChainedPtr32Bind) IsBind

func (d DyldChainedPtr32Bind) IsBind() bool

func (DyldChainedPtr32Bind) IsRebase

func (d DyldChainedPtr32Bind) IsRebase() bool

func (DyldChainedPtr32Bind) Kind

func (d DyldChainedPtr32Bind) Kind() string

func (DyldChainedPtr32Bind) Name

func (d DyldChainedPtr32Bind) Name() string

func (DyldChainedPtr32Bind) Next

func (d DyldChainedPtr32Bind) Next() uint32

func (DyldChainedPtr32Bind) Offset

func (d DyldChainedPtr32Bind) Offset() uint64

func (DyldChainedPtr32Bind) Ordinal

func (d DyldChainedPtr32Bind) Ordinal() uint64

func (DyldChainedPtr32Bind) Raw

func (d DyldChainedPtr32Bind) Raw() uint64

func (DyldChainedPtr32Bind) String

func (d DyldChainedPtr32Bind) String(baseAddr ...uint64) string

type DyldChainedPtr32CacheRebase

type DyldChainedPtr32CacheRebase struct {
	Fixup   uint64
	Pointer uint32
}

DYLD_CHAINED_PTR_32_CACHE

func (DyldChainedPtr32CacheRebase) IsBind

func (d DyldChainedPtr32CacheRebase) IsBind() bool

func (DyldChainedPtr32CacheRebase) IsRebase

func (d DyldChainedPtr32CacheRebase) IsRebase() bool

func (DyldChainedPtr32CacheRebase) Kind

func (DyldChainedPtr32CacheRebase) Next

func (DyldChainedPtr32CacheRebase) Offset

func (DyldChainedPtr32CacheRebase) Raw

func (DyldChainedPtr32CacheRebase) String

func (d DyldChainedPtr32CacheRebase) String(baseAddr ...uint64) string

func (DyldChainedPtr32CacheRebase) Target

type DyldChainedPtr32FirmwareRebase

type DyldChainedPtr32FirmwareRebase struct {
	Fixup   uint64
	Pointer uint32
}

DYLD_CHAINED_PTR_32_FIRMWARE

func (DyldChainedPtr32FirmwareRebase) IsBind

func (DyldChainedPtr32FirmwareRebase) IsRebase

func (d DyldChainedPtr32FirmwareRebase) IsRebase() bool

func (DyldChainedPtr32FirmwareRebase) Kind

func (DyldChainedPtr32FirmwareRebase) Next

func (DyldChainedPtr32FirmwareRebase) Offset

func (DyldChainedPtr32FirmwareRebase) Raw

func (DyldChainedPtr32FirmwareRebase) String

func (d DyldChainedPtr32FirmwareRebase) String(baseAddr ...uint64) string

func (DyldChainedPtr32FirmwareRebase) Target

type DyldChainedPtr32Rebase

type DyldChainedPtr32Rebase struct {
	Fixup   uint64
	Pointer uint32
}

DYLD_CHAINED_PTR_32 Note: for DYLD_CHAINED_PTR_32 some non-pointer values are co-opted into the chain as out of range rebases. If an entry in the chain is > max_valid_pointer, then it is not a pointer. To restore the value, subtract off the bias, which is (64MB+max_valid_pointer)/2.

func (DyldChainedPtr32Rebase) Bind

func (d DyldChainedPtr32Rebase) Bind() uint32

func (DyldChainedPtr32Rebase) IsBind

func (d DyldChainedPtr32Rebase) IsBind() bool

func (DyldChainedPtr32Rebase) IsRebase

func (d DyldChainedPtr32Rebase) IsRebase() bool

func (DyldChainedPtr32Rebase) Kind

func (d DyldChainedPtr32Rebase) Kind() string

func (DyldChainedPtr32Rebase) Next

func (d DyldChainedPtr32Rebase) Next() uint32

func (DyldChainedPtr32Rebase) Offset

func (d DyldChainedPtr32Rebase) Offset() uint64

func (DyldChainedPtr32Rebase) Raw

func (DyldChainedPtr32Rebase) String

func (d DyldChainedPtr32Rebase) String(baseAddr ...uint64) string

func (DyldChainedPtr32Rebase) Target

func (d DyldChainedPtr32Rebase) Target() uint64

type DyldChainedPtr64Bind

type DyldChainedPtr64Bind struct {
	Fixup   uint64
	Pointer uint64
	Import  string
}

DYLD_CHAINED_PTR_64

func (DyldChainedPtr64Bind) Addend

func (d DyldChainedPtr64Bind) Addend() uint64

func (DyldChainedPtr64Bind) Bind

func (d DyldChainedPtr64Bind) Bind() uint64

func (DyldChainedPtr64Bind) IsBind

func (d DyldChainedPtr64Bind) IsBind() bool

func (DyldChainedPtr64Bind) IsRebase

func (d DyldChainedPtr64Bind) IsRebase() bool

func (DyldChainedPtr64Bind) Kind

func (d DyldChainedPtr64Bind) Kind() string

func (DyldChainedPtr64Bind) Name

func (d DyldChainedPtr64Bind) Name() string

func (DyldChainedPtr64Bind) Next

func (d DyldChainedPtr64Bind) Next() uint64

func (DyldChainedPtr64Bind) Offset

func (d DyldChainedPtr64Bind) Offset() uint64

func (DyldChainedPtr64Bind) Ordinal

func (d DyldChainedPtr64Bind) Ordinal() uint64

func (DyldChainedPtr64Bind) Raw

func (d DyldChainedPtr64Bind) Raw() uint64

func (DyldChainedPtr64Bind) Reserved

func (d DyldChainedPtr64Bind) Reserved() uint64

func (DyldChainedPtr64Bind) String

func (d DyldChainedPtr64Bind) String(baseAddr ...uint64) string

type DyldChainedPtr64KernelCacheRebase

type DyldChainedPtr64KernelCacheRebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_64_KERNEL_CACHE, DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE

func (DyldChainedPtr64KernelCacheRebase) AddrDiv

func (DyldChainedPtr64KernelCacheRebase) CacheLevel

func (DyldChainedPtr64KernelCacheRebase) Diversity

func (DyldChainedPtr64KernelCacheRebase) IsAuth

func (DyldChainedPtr64KernelCacheRebase) IsBind

func (DyldChainedPtr64KernelCacheRebase) IsRebase

func (DyldChainedPtr64KernelCacheRebase) Key

func (DyldChainedPtr64KernelCacheRebase) Kind

func (DyldChainedPtr64KernelCacheRebase) Next

func (DyldChainedPtr64KernelCacheRebase) Offset

func (DyldChainedPtr64KernelCacheRebase) Raw

func (DyldChainedPtr64KernelCacheRebase) String

func (d DyldChainedPtr64KernelCacheRebase) String(baseAddr ...uint64) string

func (DyldChainedPtr64KernelCacheRebase) Target

type DyldChainedPtr64Rebase

type DyldChainedPtr64Rebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_64

func (DyldChainedPtr64Rebase) Bind

func (d DyldChainedPtr64Rebase) Bind() uint64

func (DyldChainedPtr64Rebase) High8

func (d DyldChainedPtr64Rebase) High8() uint64

func (DyldChainedPtr64Rebase) IsBind

func (d DyldChainedPtr64Rebase) IsBind() bool

func (DyldChainedPtr64Rebase) IsRebase

func (d DyldChainedPtr64Rebase) IsRebase() bool

func (DyldChainedPtr64Rebase) Kind

func (d DyldChainedPtr64Rebase) Kind() string

func (DyldChainedPtr64Rebase) Next

func (d DyldChainedPtr64Rebase) Next() uint64

func (DyldChainedPtr64Rebase) Offset

func (d DyldChainedPtr64Rebase) Offset() uint64

func (DyldChainedPtr64Rebase) Raw

func (DyldChainedPtr64Rebase) Reserved

func (d DyldChainedPtr64Rebase) Reserved() uint64

func (DyldChainedPtr64Rebase) String

func (d DyldChainedPtr64Rebase) String(baseAddr ...uint64) string

func (DyldChainedPtr64Rebase) Target

func (d DyldChainedPtr64Rebase) Target() uint64

func (DyldChainedPtr64Rebase) UnpackedTarget

func (d DyldChainedPtr64Rebase) UnpackedTarget() uint64

type DyldChainedPtr64RebaseOffset

type DyldChainedPtr64RebaseOffset struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_64_OFFSET

func (DyldChainedPtr64RebaseOffset) Bind

func (DyldChainedPtr64RebaseOffset) High8

func (DyldChainedPtr64RebaseOffset) IsBind

func (DyldChainedPtr64RebaseOffset) IsRebase

func (d DyldChainedPtr64RebaseOffset) IsRebase() bool

func (DyldChainedPtr64RebaseOffset) Kind

func (DyldChainedPtr64RebaseOffset) Next

func (DyldChainedPtr64RebaseOffset) Offset

func (DyldChainedPtr64RebaseOffset) Raw

func (DyldChainedPtr64RebaseOffset) Reserved

func (d DyldChainedPtr64RebaseOffset) Reserved() uint64

func (DyldChainedPtr64RebaseOffset) String

func (d DyldChainedPtr64RebaseOffset) String(baseAddr ...uint64) string

func (DyldChainedPtr64RebaseOffset) Target

func (DyldChainedPtr64RebaseOffset) UnpackedTarget

func (d DyldChainedPtr64RebaseOffset) UnpackedTarget() uint64

type DyldChainedPtrArm64eAuthBind

type DyldChainedPtrArm64eAuthBind struct {
	Fixup   uint64
	Pointer uint64
	Import  string
}

DYLD_CHAINED_PTR_ARM64E

func (DyldChainedPtrArm64eAuthBind) Addend

func (DyldChainedPtrArm64eAuthBind) AddrDiv

func (DyldChainedPtrArm64eAuthBind) Auth

func (DyldChainedPtrArm64eAuthBind) Bind

func (DyldChainedPtrArm64eAuthBind) Diversity

func (d DyldChainedPtrArm64eAuthBind) Diversity() uint64

func (DyldChainedPtrArm64eAuthBind) IsBind

func (DyldChainedPtrArm64eAuthBind) IsRebase

func (d DyldChainedPtrArm64eAuthBind) IsRebase() bool

func (DyldChainedPtrArm64eAuthBind) Key

func (DyldChainedPtrArm64eAuthBind) Kind

func (DyldChainedPtrArm64eAuthBind) Name

func (DyldChainedPtrArm64eAuthBind) Next

func (DyldChainedPtrArm64eAuthBind) Offset

func (DyldChainedPtrArm64eAuthBind) Ordinal

func (DyldChainedPtrArm64eAuthBind) Raw

func (DyldChainedPtrArm64eAuthBind) String

func (d DyldChainedPtrArm64eAuthBind) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eAuthBind) Zero

type DyldChainedPtrArm64eAuthBind24

type DyldChainedPtrArm64eAuthBind24 struct {
	Fixup   uint64
	Pointer uint64
	Import  string
}

DYLD_CHAINED_PTR_ARM64E_USERLAND24

func (DyldChainedPtrArm64eAuthBind24) Addend

func (DyldChainedPtrArm64eAuthBind24) AddrDiv

func (DyldChainedPtrArm64eAuthBind24) Auth

func (DyldChainedPtrArm64eAuthBind24) Bind

func (DyldChainedPtrArm64eAuthBind24) Diversity

func (d DyldChainedPtrArm64eAuthBind24) Diversity() uint64

func (DyldChainedPtrArm64eAuthBind24) IsBind

func (DyldChainedPtrArm64eAuthBind24) IsRebase

func (d DyldChainedPtrArm64eAuthBind24) IsRebase() bool

func (DyldChainedPtrArm64eAuthBind24) Key

func (DyldChainedPtrArm64eAuthBind24) Kind

func (DyldChainedPtrArm64eAuthBind24) Name

func (DyldChainedPtrArm64eAuthBind24) Next

func (DyldChainedPtrArm64eAuthBind24) Offset

func (DyldChainedPtrArm64eAuthBind24) Ordinal

func (DyldChainedPtrArm64eAuthBind24) Raw

func (DyldChainedPtrArm64eAuthBind24) String

func (d DyldChainedPtrArm64eAuthBind24) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eAuthBind24) Zero

type DyldChainedPtrArm64eAuthRebase

type DyldChainedPtrArm64eAuthRebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E

func (DyldChainedPtrArm64eAuthRebase) AddrDiv

func (DyldChainedPtrArm64eAuthRebase) Auth

func (DyldChainedPtrArm64eAuthRebase) Bind

func (DyldChainedPtrArm64eAuthRebase) Diversity

func (d DyldChainedPtrArm64eAuthRebase) Diversity() uint64

func (DyldChainedPtrArm64eAuthRebase) IsBind

func (DyldChainedPtrArm64eAuthRebase) IsRebase

func (d DyldChainedPtrArm64eAuthRebase) IsRebase() bool

func (DyldChainedPtrArm64eAuthRebase) Key

func (DyldChainedPtrArm64eAuthRebase) Kind

func (DyldChainedPtrArm64eAuthRebase) Next

func (DyldChainedPtrArm64eAuthRebase) Offset

func (DyldChainedPtrArm64eAuthRebase) Raw

func (DyldChainedPtrArm64eAuthRebase) String

func (d DyldChainedPtrArm64eAuthRebase) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eAuthRebase) Target

type DyldChainedPtrArm64eAuthRebase24

type DyldChainedPtrArm64eAuthRebase24 struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E_USERLAND24

func (DyldChainedPtrArm64eAuthRebase24) AddrDiv

func (DyldChainedPtrArm64eAuthRebase24) Auth

func (DyldChainedPtrArm64eAuthRebase24) Bind

func (DyldChainedPtrArm64eAuthRebase24) Diversity

func (DyldChainedPtrArm64eAuthRebase24) IsBind

func (DyldChainedPtrArm64eAuthRebase24) IsRebase

func (DyldChainedPtrArm64eAuthRebase24) Key

func (DyldChainedPtrArm64eAuthRebase24) Kind

func (DyldChainedPtrArm64eAuthRebase24) Next

func (DyldChainedPtrArm64eAuthRebase24) Offset

func (DyldChainedPtrArm64eAuthRebase24) Raw

func (DyldChainedPtrArm64eAuthRebase24) String

func (d DyldChainedPtrArm64eAuthRebase24) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eAuthRebase24) Target

type DyldChainedPtrArm64eBind

type DyldChainedPtrArm64eBind struct {
	Fixup   uint64
	Pointer uint64
	Import  string
}

DYLD_CHAINED_PTR_ARM64E

func (DyldChainedPtrArm64eBind) Addend

func (d DyldChainedPtrArm64eBind) Addend() uint64

func (DyldChainedPtrArm64eBind) Auth

func (DyldChainedPtrArm64eBind) Bind

func (DyldChainedPtrArm64eBind) IsBind

func (d DyldChainedPtrArm64eBind) IsBind() bool

func (DyldChainedPtrArm64eBind) IsRebase

func (d DyldChainedPtrArm64eBind) IsRebase() bool

func (DyldChainedPtrArm64eBind) Kind

func (DyldChainedPtrArm64eBind) Name

func (DyldChainedPtrArm64eBind) Next

func (DyldChainedPtrArm64eBind) Offset

func (d DyldChainedPtrArm64eBind) Offset() uint64

func (DyldChainedPtrArm64eBind) Ordinal

func (d DyldChainedPtrArm64eBind) Ordinal() uint64

func (DyldChainedPtrArm64eBind) Raw

func (DyldChainedPtrArm64eBind) SignExtendedAddend

func (d DyldChainedPtrArm64eBind) SignExtendedAddend() int64

func (DyldChainedPtrArm64eBind) String

func (d DyldChainedPtrArm64eBind) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eBind) Zero

type DyldChainedPtrArm64eBind24

type DyldChainedPtrArm64eBind24 struct {
	Fixup   uint64
	Pointer uint64
	Import  string
}

DYLD_CHAINED_PTR_ARM64E_USERLAND24

func (DyldChainedPtrArm64eBind24) Addend

func (DyldChainedPtrArm64eBind24) Auth

func (DyldChainedPtrArm64eBind24) Bind

func (DyldChainedPtrArm64eBind24) IsBind

func (d DyldChainedPtrArm64eBind24) IsBind() bool

func (DyldChainedPtrArm64eBind24) IsRebase

func (d DyldChainedPtrArm64eBind24) IsRebase() bool

func (DyldChainedPtrArm64eBind24) Kind

func (DyldChainedPtrArm64eBind24) Name

func (DyldChainedPtrArm64eBind24) Next

func (DyldChainedPtrArm64eBind24) Offset

func (DyldChainedPtrArm64eBind24) Ordinal

func (d DyldChainedPtrArm64eBind24) Ordinal() uint64

func (DyldChainedPtrArm64eBind24) Raw

func (DyldChainedPtrArm64eBind24) SignExtendedAddend

func (d DyldChainedPtrArm64eBind24) SignExtendedAddend() int64

func (DyldChainedPtrArm64eBind24) String

func (d DyldChainedPtrArm64eBind24) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eBind24) Zero

type DyldChainedPtrArm64eRebase

type DyldChainedPtrArm64eRebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E

func (DyldChainedPtrArm64eRebase) Auth

func (DyldChainedPtrArm64eRebase) Bind

func (DyldChainedPtrArm64eRebase) High8

func (DyldChainedPtrArm64eRebase) IsBind

func (d DyldChainedPtrArm64eRebase) IsBind() bool

func (DyldChainedPtrArm64eRebase) IsRebase

func (d DyldChainedPtrArm64eRebase) IsRebase() bool

func (DyldChainedPtrArm64eRebase) Kind

func (DyldChainedPtrArm64eRebase) Next

func (DyldChainedPtrArm64eRebase) Offset

func (DyldChainedPtrArm64eRebase) Raw

func (DyldChainedPtrArm64eRebase) String

func (d DyldChainedPtrArm64eRebase) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eRebase) Target

func (DyldChainedPtrArm64eRebase) UnpackTarget

func (d DyldChainedPtrArm64eRebase) UnpackTarget() uint64

type DyldChainedPtrArm64eRebase24

type DyldChainedPtrArm64eRebase24 struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E_USERLAND24

func (DyldChainedPtrArm64eRebase24) Auth

func (DyldChainedPtrArm64eRebase24) Bind

func (DyldChainedPtrArm64eRebase24) High8

func (DyldChainedPtrArm64eRebase24) IsBind

func (DyldChainedPtrArm64eRebase24) IsRebase

func (d DyldChainedPtrArm64eRebase24) IsRebase() bool

func (DyldChainedPtrArm64eRebase24) Kind

func (DyldChainedPtrArm64eRebase24) Next

func (DyldChainedPtrArm64eRebase24) Offset

func (DyldChainedPtrArm64eRebase24) Raw

func (DyldChainedPtrArm64eRebase24) String

func (d DyldChainedPtrArm64eRebase24) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eRebase24) Target

func (DyldChainedPtrArm64eRebase24) UnpackTarget

func (d DyldChainedPtrArm64eRebase24) UnpackTarget() uint64

type DyldChainedPtrArm64eSharedCacheAuthRebase

type DyldChainedPtrArm64eSharedCacheAuthRebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE

func (DyldChainedPtrArm64eSharedCacheAuthRebase) AddrDiv

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Auth

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Diversity

func (DyldChainedPtrArm64eSharedCacheAuthRebase) IsBind

func (DyldChainedPtrArm64eSharedCacheAuthRebase) IsDataKey

func (DyldChainedPtrArm64eSharedCacheAuthRebase) IsRebase

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Kind

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Next

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Offset

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Raw

func (DyldChainedPtrArm64eSharedCacheAuthRebase) String

func (DyldChainedPtrArm64eSharedCacheAuthRebase) Target

type DyldChainedPtrArm64eSharedCacheRebase

type DyldChainedPtrArm64eSharedCacheRebase struct {
	Fixup   uint64
	Pointer uint64
}

DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE

func (DyldChainedPtrArm64eSharedCacheRebase) Auth

func (DyldChainedPtrArm64eSharedCacheRebase) High8

func (DyldChainedPtrArm64eSharedCacheRebase) IsBind

func (DyldChainedPtrArm64eSharedCacheRebase) IsRebase

func (DyldChainedPtrArm64eSharedCacheRebase) Kind

func (DyldChainedPtrArm64eSharedCacheRebase) Next

func (DyldChainedPtrArm64eSharedCacheRebase) Offset

func (DyldChainedPtrArm64eSharedCacheRebase) Raw

func (DyldChainedPtrArm64eSharedCacheRebase) String

func (d DyldChainedPtrArm64eSharedCacheRebase) String(baseAddr ...uint64) string

func (DyldChainedPtrArm64eSharedCacheRebase) Target

type DyldChainedStarts

type DyldChainedStarts struct {
	DyldChainedStartsInSegment
	PageStarts  []DCPtrStart
	ChainStarts []uint16
	Fixups      []Fixup
}

func (*DyldChainedStarts) Binds

func (s *DyldChainedStarts) Binds() []Bind

Binds filters fixups to only binds

func (*DyldChainedStarts) Rebases

func (s *DyldChainedStarts) Rebases() []Rebase

Rebases filters fixups to only rebases

type DyldChainedStartsInImage

type DyldChainedStartsInImage struct {
	SegCount       uint32
	SegInfoOffsets []uint32 // []uint32 ARRAY each entry is offset into this struct for that segment

}

DyldChainedStartsInImage this struct is embedded in LC_DYLD_CHAINED_FIXUPS payload

type DyldChainedStartsInSegment

type DyldChainedStartsInSegment struct {
	Size            uint32    // size of this (amount kernel needs to copy)
	PageSize        uint16    // 0x1000 or 0x4000
	PointerFormat   DCPtrKind // DYLD_CHAINED_PTR_*
	SegmentOffset   uint64    // offset in memory to start of segment
	MaxValidPointer uint32    // for 32-bit OS, any value beyond this is not a pointer
	PageCount       uint16    // how many pages are in array

}

DyldChainedStartsInSegment object is embedded in dyld_chain_starts_in_image and passed down to the kernel for page-in linking

type Fixup

type Fixup interface {
	Offset() uint64
	IsRebase() bool
	IsBind() bool
	Raw() uint64
	String(baseAddr ...uint64) string
}

type Import

type Import interface {
	LibOrdinal() int
	WeakImport() bool
	NameOffset() uint64
	Addend() uint64
}

type ImportFormat

type ImportFormat uint32

ImportFormat are values for dyld_chained_fixups_header.imports_format

const (
	DC_IMPORT          ImportFormat = 1
	DC_IMPORT_ADDEND   ImportFormat = 2
	DC_IMPORT_ADDEND64 ImportFormat = 3
)

type Rebase

type Rebase interface {
	Offset() uint64
	Target() uint64
	Raw() uint64
	String(baseAddr ...uint64) string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL