I spent the past two weeks in reading Practical Binary Analysis. Since I am not a professional reverse engineer, I glossed over the “Part III: Advanced Binary Analysis”, so I only read half the book. Even though, I still get a big gain:
(1) Know better of ELF file. On *nix
Operating system, ELF
file is everywhere: executable file, object file, shared library and coredump. “Chapter 2: The ELF format” gives me a clear explanation of the composition of ELF
. E.g., I know why some functions have “@plt
” suffix when using gdb
to debug it.
(2) Master many tricks about GNU Binutils. GNU Binutils
is a toolbox which provides versatile command line programs to analyze ELF
files. Literally it relies heavily on BFD library. I also get some sense about how to use BFD
library to tweak ELF
files.
(3) “Appendix A: A crash course on X86 assembly” is a good tutorial for refreshing X86
architecture and assembly language.
(4) Others: E.g., I understand how to use LD_PRELOAD
environmental variable and dynamic linking functions to manipulate shared library.
All in all, if you are working on *nix
(although this book is based on Linux
, I think most knowledge are also applicable to other *nix
), you should try to read this book. I promise it is not a waste of time and you can always learn something, believe me!