Read more
Focusing on the Executable and Linkable Format (ELF) used in Linux and Unix systems, this book explores how code is compiled, linked, and loaded into memory, and how the operating system executes it. You ll learn to analyse ELF files, debug and optimize programs at the binary level, write custom linker scripts, and understand dynamic linking and symbol resolution.
ELF files are important because low-level programming and binary analysis are critical skills for system programmers, embedded developers, and security researchers. With the rise of performance optimization, cybersecurity, and resource-constrained environments (e.g., IoT), understanding executables is more relevant than ever.
Executable Files for Linux provides a hands-on, modern approach to a topic often overlooked in learning resources today.
What You Will Learn
· Analyse and modify ELF files to optimize software performance
· Debug and optimize programs at the binary level
· Write custom linker scripts for complex projects
· Understand dynamic linking, lazy loading,
List of contents
1: Introduction to Executables 2: ELF: Demystifying the Executable Format.- 3: Understanding ELF Sections.- 4: Before main(): The Secret Life of Global Variables.- 5: The Linker: Bringing The C Code Together.- 6: Relocations: The Linker's Patchwork.- 7: Symbols: The Linker's Address Book. 8: Dynamic Linking in C: Shrinking Executables and Sharing Code.- 9: Lazy Loading: Dynamic Linking on Demand.- 10: Understanding Linux Executable Loading: A Deep Dive into Kernel Internals.- 11: Weak Symbols: A Linker's Flexibility.- 12: Level Up Your C: Key Takeaways About Linking and Loading.
About the author
Mohit Mishra is a low-level programming enthusiast with extensive experience in executable file formats (ELF), linking, loading, and debugging. He has worked on projects involving ELF file analysis, dynamic linking, and performance optimization. Mohit is the creator of the 'Reversing Bits Cheatsheets' repository, which provides comprehensive guides on tools essential for assembly programming, reverse engineering, and binary analysis. His technical articles and tutorials on low-level programming have been widely appreciated by the developer community.