|
enum class | TYPE : uint64_t {
REGULAR = 0x00u
, ZEROFILL = 0x01u
, CSTRING_LITERALS = 0x02u
, IS_4BYTE_LITERALS = 0x03u
,
IS_8BYTE_LITERALS = 0x04u
, LITERAL_POINTERS = 0x05u
, NON_LAZY_SYMBOL_POINTERS = 0x06u
, LAZY_SYMBOL_POINTERS = 0x07u
,
SYMBOL_STUBS = 0x08u
, MOD_INIT_FUNC_POINTERS = 0x09u
, MOD_TERM_FUNC_POINTERS = 0x0au
, COALESCED = 0x0bu
,
GB_ZEROFILL = 0x0cu
, INTERPOSING = 0x0du
, IS_16BYTE_LITERALS = 0x0eu
, DTRACE_DOF = 0x0fu
,
LAZY_DYLIB_SYMBOL_POINTERS = 0x10u
, THREAD_LOCAL_REGULAR = 0x11u
, THREAD_LOCAL_ZEROFILL = 0x12u
, THREAD_LOCAL_VARIABLES = 0x13u
,
THREAD_LOCAL_VARIABLE_POINTERS = 0x14u
, THREAD_LOCAL_INIT_FUNCTION_POINTERS = 0x15u
, INIT_FUNC_OFFSETS = 0x16u
} |
|
enum class | FLAGS : uint64_t {
PURE_INSTRUCTIONS = 0x80000000u
, NO_TOC = 0x40000000u
, STRIP_STATIC_SYMS = 0x20000000u
, NO_DEAD_STRIP = 0x10000000u
,
LIVE_SUPPORT = 0x08000000u
, SELF_MODIFYING_CODE = 0x04000000u
, DEBUG_INFO = 0x02000000u
, SOME_INSTRUCTIONS = 0x00000400u
,
EXT_RELOC = 0x00000200u
, LOC_RELOC = 0x00000100u
} |
|
using | content_t = std::vector<uint8_t> |
|
using | relocations_t = std::vector<std::unique_ptr<Relocation>> |
| Internal container for storing Mach-O Relocation.
|
|
using | it_relocations = ref_iterator<relocations_t&, Relocation*> |
| Iterator which outputs Relocation&.
|
|
using | it_const_relocations = const_ref_iterator<const relocations_t&, const Relocation*> |
| Iterator which outputs const Relocation&.
|
|
template<class T > |
using | output_t = add_pointer_t<decay_t<T>> |
|
template<class T > |
using | output_const_t = add_pointer_t<add_const_t<decay_t<T>>> |
|
|
| Section () |
|
| Section (const details::section_32 §ion_cmd) |
|
| Section (const details::section_64 §ion_cmd) |
|
| Section (std::string name) |
|
| Section (std::string name, content_t content) |
|
Section & | operator= (Section copy) |
|
| Section (const Section ©) |
|
void | swap (Section &other) noexcept |
|
| ~Section () override |
|
span< const uint8_t > | content () const override |
| section's content
|
|
void | content (const content_t &data) override |
| Update the content of the section.
|
|
const std::string & | segment_name () const |
| Return the name of the segment linked to this section.
|
|
uint64_t | address () const |
| Virtual base address of the section.
|
|
uint32_t | alignment () const |
| Section alignment as a power of 2.
|
|
uint32_t | relocation_offset () const |
| Offset of the relocation table. This value should be 0 for executable and libraries as the relocations are managed by the DyldInfo::rebase.
|
|
uint32_t | numberof_relocations () const |
| Number of relocations associated with this section.
|
|
FLAGS | flags () const |
| Section's flags masked with SECTION_FLAGS_MASK (see: Section::FLAGS)
|
|
TYPE | type () const |
| Type of the section. This value can help to determine the purpose of the section (e.g. TYPE::INTERPOSING)
|
|
uint32_t | reserved1 () const |
| According to the official loader.h file, this value is reserved for offset or index
|
|
uint32_t | reserved2 () const |
| According to the official loader.h file, this value is reserved for count or sizeof
|
|
uint32_t | reserved3 () const |
| This value is only present for 64 bits Mach-O files. In that case, the value is reserved.
|
|
std::vector< FLAGS > | flags_list () const |
| Return the Section::flags as a list of Section::FLAGS.
|
|
uint32_t | raw_flags () const |
| Section flags without applying the SECTION_FLAGS_MASK mask.
|
|
bool | has_segment () const |
| Check if this section is correctly linked with a MachO::SegmentCommand.
|
|
SegmentCommand * | segment () |
| The segment associated with this section or a nullptr if not present.
|
|
const SegmentCommand * | segment () const |
|
std::unique_ptr< SpanStream > | stream () const |
| Return a stream over the content of this section.
|
|
void | clear (uint8_t v) |
| Clear the content of this section by filling its values with the byte provided in parameter.
|
|
it_relocations | relocations () |
| Return an iterator over the MachO::Relocation associated with this section.
|
|
it_const_relocations | relocations () const |
|
void | segment_name (const std::string &name) |
|
void | address (uint64_t address) |
|
void | alignment (uint32_t align) |
|
void | relocation_offset (uint32_t offset) |
|
void | numberof_relocations (uint32_t nb_reloc) |
|
void | flags (uint32_t flags) |
|
void | flags (std::vector< FLAGS > flags) |
|
void | type (TYPE type) |
|
void | reserved1 (uint32_t reserved1) |
|
void | reserved2 (uint32_t reserved2) |
|
void | reserved3 (uint32_t reserved3) |
|
bool | has (FLAGS flag) const |
| Check if the section has the given Section::FLAGS flag.
|
|
void | add (FLAGS flag) |
| Append a Section::FLAGS to the current section.
|
|
void | remove (FLAGS flag) |
| Remove a Section::FLAGS to the current section.
|
|
Section & | operator+= (FLAGS flag) |
|
Section & | operator-= (FLAGS flag) |
|
void | accept (Visitor &visitor) const override |
|
| Section ()=default |
|
| Section (std::string name) |
|
| ~Section () override=default |
|
Section & | operator= (const Section &)=default |
|
| Section (const Section &)=default |
|
virtual std::string | name () const |
| section's name
|
|
virtual const std::string & | fullname () const |
| Return the complete section's name which might trailing (0 ) bytes.
|
|
virtual void | size (uint64_t size) |
| Change the section size.
|
|
virtual uint64_t | size () const |
| section's size (size in the binary, not the virtual size)
|
|
virtual uint64_t | offset () const |
| Offset in the binary.
|
|
virtual uint64_t | virtual_address () const |
| Address where the section should be mapped.
|
|
virtual void | virtual_address (uint64_t virtual_address) |
|
virtual void | name (std::string name) |
| Change the section's name.
|
|
virtual void | offset (uint64_t offset) |
|
double | entropy () const |
| Section's entropy.
|
|
size_t | search (uint64_t integer, size_t pos, size_t size) const |
|
size_t | search (const std::vector< uint8_t > &pattern, size_t pos=0) const |
|
size_t | search (const std::string &pattern, size_t pos=0) const |
|
size_t | search (uint64_t integer, size_t pos=0) const |
|
std::vector< size_t > | search_all (uint64_t v, size_t size) const |
|
std::vector< size_t > | search_all (uint64_t v) const |
|
std::vector< size_t > | search_all (const std::string &v) const |
|
void | accept (Visitor &visitor) const override |
| Method so that the visitor can visit us.
|
|
| Object () |
|
| Object (const Object &other) |
|
Object & | operator= (const Object &other) |
|
| Object (Object &&other) noexcept=default |
|
Object & | operator= (Object &&other) noexcept=default |
|
template<class T > |
output_t< T > | as () |
|
template<class T > |
output_const_t< T > | as () const |
|
virtual bool | operator== (const Object &other) const |
|
virtual bool | operator!= (const Object &other) const |
|
virtual | ~Object () |
|
Class that represents a Mach-O section.