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
- Xcode