/system-programming-roadmap

A roadmap to teach myself compiler dev, malware reverse engineering, exploitation and kernel dev fundamentals

System Programming Roadmap

A roadmap to teach myself compiler dev, malware reverse engineering and kernel dev fundamentals. To be noted they are only for the fundamental knowledge and doesn't make you a master of any. I will pick one or more of the below mentioned fields for later research in some specific topics. Low Level Programming University also has a good list of resources to follow but this is my personal roadmap.

Topics to study here may or may not be in order and can be studied according to your preference, gievn that prerequisites are getting fulfilled for each one of them.

Prerequisites

I'm already assuming that you have basic understanding of computer architecture and experience with atleast one system programming language, some basics of how assembly works and familiar using any POSIX system. A good detailed look of how computers work at the electronics level can be found in the book Introduction to Digital Electronics by Agner Fog.

System Programming Languages

Learn any two of the given languages, make some basic projects to get yourself familiar with it, solve some programming exercises.

Learn some Computer Architecture

Learn Arm and RISCV based computer architecture to build an efficient and optimized approach towards solving the problems at hardware level

Learn some Assembly

Prerequisites: Learn about Digital Logic

If you are not familiar with assembly yet, I would recommend checking out some tutorials like-

After this, I would recommend solving easy crackmes for exercise. crackmes.one and tryhackme are places to find some of the easy ones. Hard ones still require some pwning knowledge which I'm gona discuss in the exploitation section.

Compilers

Prerequisites include experience creating projects in a system programming language and a deep understanding of memory and CPU.

Exploitation

Prerequisites include experience with assembly.

Browser Hacking

Prerequisites include high level knowledge of VM internals, and solid understanding and experience with Compiler Engineering

Malware

Prerequisites include a high-level understanding of windows and solid reverse engineering skills.

OS Fundamentals

I'm not quite sure that I want to get into kernel development (yet) but the concepts seem cool and its a good idea for a vacation project or assignments for my OS classes in university. Make sure to read the requirements before getting started.

VM internals

Lists of VM internals to study while making progress in compiler engineering and Browser development:

Collective Courses

Collection of resources which includes 2 or more of the topics discussed above:

  • Nand To Tetris A course to teach you about how to build a computer, OS and a compiler form stratch.
  • Dive Into Systems A really good book to introduce you with systems programming.