Some resources I found interesting. Actively updated.
1. Binary Analysis, Traslation, Rewriting, Disassembly, Decompilation etc.,
1.1 Theses, Surveys
- Robust Low-Overhead Binary Rewriting: Design, Extensibility and Customizability - 2021. (backup).
- Dynamic Binary Lifting and Recompilation - 2020. (backup).
- Scalable Validation of Binary Lifters - 2020. (backup)
- Increasing the Performance of Symbolic Execution by compiling Symbolic Handling into Binaries - 2020. (backup).
- From Hack to Elaborate Technique - A Survey on Binary Rewriting - 2019. (backup).
- Type Inference on Executables - 2016: A survey on the type inference problem in binaries. (backup).
- Analyzing and Securing Binaries Through Static Disassembly - 2017: PhD Thesis of Daniel Andriesse at VU Amsterdam. (backup).
- Building a Base towards Cyber-autonomy - 2017: Prof. Yan’s PhD Thesis. (backup).
- Abstraction Recovery for Scalable Static Binary Analysis - 2014. (backup).
- Deep Analysis of Binary Code to Recover Program Structure - 2014. (backup).
- Static Analysis of x86 Executables - 2010: PhD Thesis of Johannes Kinder at TU Darmstadt. (backup).
- Reverse Compilation Techniques - 1994: PhD Thesis of Christina Cifuentes. An amazing thesis to understand decompilation in detail. (backup).
2. Reversing, Malware Analysis, Memory Forensics, Exploit Dev etc.,
2.1 Theses, Surveys
- Binary Analysis for Linux and IoT Malware - 2020. (backup).
- Advances in Memory Forensics - 2019. (backup).
- Advances in Modern Malware and Memory Analysis - 2015. (backup).
2.2 Books, websites and other resources
- Reverse Engineering for Beginners(RE4B) : This book is the best if you want to get started with Reverse Engineering. Loads of examples related multiple Architectures like x86, ARM, mips, multiple Compilers - gcc, MSVC.
- challenges.re - If you want to get started with Reverse Engineering and Binary Exploitation, this website is the best way to start!
3. TPM, Firmware, BIOS, UEFI, BootLoaders etc.,
3.1 Theses, Surveys
- Towards System-wide Dynamic Analysis of Embedded Systems - 2020. (backup).
- Dynamic Binary Firmware Analysis - Challenges and Solutions - 2019. (backup).
- Large Scale Security Analysis of Embedded Devices’ Firmware - 2015. (backup).
- Development of novel Dynamic Binary Analysis techniques for Security Analysis of Embedded Devices - 2015. (backup).
3.2 Books and other resources
- UEFI-EDK2 Training: In-depth training on UEFI. Best way to get started with UEFI.
- EDK2: Firmware development environment for UEFI specifications. In short, one can build a virtual firmware, run it on VM, write UEFI applications, run and test them in that VM.
- EDK2 documents: Lists all the documents related to EDK2. It has everything from getting started to writing hello-world UEFI programs to training/courses on UEFI.
- Introduction to EFI programming by Roderick Smith.
- x86asm.net - Introduction to UEFI
- EFI Tutorial
- Books on UEFI by its creators: Harnessing the UEFI Shell, Beyond BIOS. The first book is an amazing starter. Second one does a deep dive.
- osdev.org UEFI wiki
- Remote debugging UEFI programs with gdb
- Firmware-Security, Reversing etc.,
- Other related stuff
- Coreboot: An opensource alternative to proprietary BIOS used by various vendors.
- LinuxBoot: Linux as firmware.
- System Management BIOS (SMBIOS)
- SeaBIOS: Opensource implementation of x86 legacy BIOS.
- Linux from scratch’s About firmware: This article has links to several amazing articles/github repositories in it.
- Intel’s repository of processor microcode
- Firmware, BIOS samples
4. Crypto, Math
- cryptopals.com - Best Crypto site I have come across. Has programming exercises related to different cryptographic algorithms, different attacks on those algorithms.
- crypto101.io - It is a introductory course on cryptography available in the form of a book.
- projecteuler.net - If you are into Number Theory, Math, Programming, this is one of the best websites to go to!
5. Linux Systems Programming
- Angrave’s System Programming: This is probably the best resource to get started with Linux systems programming. Its just too good!
- University of Georgia’s Systems Programming Course
- University of Wisconsin-Madison’s Operating Systems course
6. Computer Networks
- Beej’s Guide to Network Programming - One of the best guides for Network Programming in C.
7. Kernel Bypass Techniques
These articles (in this order) helped me understand Kernel Bypass techniques better
- Diving into Linux Networking Stack - A gentle introduction of how Network Driver interacts with NIC.
- Inproving Linux Networking Performance - This article clearly explains what are the problems with the current(2015) Linux Network Stack and a few suggestions to improve it’s performance
- What is Kernel Bypass? - An amazing article which will help you understand Kernel Bypass techniques which will help improve performance of packet IO.
- netmap - A fast packet I/O Framework - The official website of netmap.
- netmap: a novel framework for fast packet I/O - netmap’s official paper. Just amazing!
- DPDK - Data Plane Development Kit - Official website of DPDK
- Impressive Packet Processing Performance Enables Greater Workload Consolidation - Paper explaining DPDK
- Zero Copy Networking - An interesting concept which helps in improving Network Stack performance
- Comparision of High Performance Packet IO Frameworks - An amazing paper which will compare leading fast packet IO frameworks