llios icon indicating copy to clipboard operation
llios copied to clipboard

Random stuff about lower level iOS

Low Level iOS

This repo is mostly my study notes about low level iOS.

If you find anything in my notes is incorrect, please create an issue! If you have any questions, feel free to use Discussions so that we can learn something together.

Topics

  • Mach-O Parser - writing a Mach-O format parser while learning it
    • LC_SEGMENT_64 - segments and sections
    • LC_SYMTAB - symbol table
    • LC_DYSYMTAB - dynamic symbol table
    • LC_DYLD_INFO(_ONLY) - information for dyld
    • LC_DYLD_CHAINED_FIXUPS - the new way to encode dyld info
    • LC_DYLD_EXPORTS_TRIE - the new command for exported symbols
    • LC_DYLD_ENVIRONMENT - embed environment variables in the binary
    • LC_LINKER_OPTION - auto linking
    • LC_BUILD_VERSION - platform requirements
    • LC_MAIN - the entry point of an executable
    • LC_ENCRYPTION_INFO_64 - FairPlay encryption
    • LC_FUNCTION_STARTS - function addresses
    • LC_*_DYLIB and LC_RPATH - dylib related load commands
    • LC_CODE_SIGNATURE - code signing and code signature format
  • Building
    • Build iOS App - build and debug an iOS app without an IDE
    • Mixed Language Compiling
    • Module Map - common formats of module.modulemap
    • Import Search Path - how import search path (-I) affects build time
    • Swift Generated ObjC Header
    • Dead Code Elimination
  • Dynamic Linking
    • How does dynamic linking works
    • Exported Symbols - details of how exported symbols are stored
    • Binding Info - details of binding opcodes
    • Chained Fixups - the new way to store dyld info
    • Dynamic Interposing - replace function implementation at runtime
  • Testing
    • XCTest - bare-bones of iOS testing