项目说明
System Programming Roadmap
A roadmap to teach myself compiler de reverse engineering and kernel de. 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 Le Uni 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 ha 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. And for the software equi work you can refer to cpu.land.
System Programming Languages
Learn any two of the gi, make some basic projects to get yourself familiar with it, solve some programming exercises.
CRustLearn C++, C++ referenceC++ (video)Learn some Computer Architecture
Learn Arm and RISC computer architecture to build an efficient and optimized approach towards solving the problems at hardware level
David A. Patterson, John L. Hennessy "Computer Architecture: A Quantitati".pdf)David A. Patterson, John L. Hennessy "Computer Organization and Design ARM Edition"David A. Patterson, John L. Hennessy "Computer Organization and Design RISC-"John Paul Shen, Mikko H. Lipasti "Modern Processor Design: Fundamentals of Superscalar Processors"Jon Stokes "Inside the Machine"CMU Computer Architecture by CMU YoutubeLearn some Assembly
Prerequisites: Learn about Digital Logic
If you are not familiar with assembly yet, I would recommend checking out some tutorials like-
[x86 quickstart[MASM]]()[x86 quickstart [NASM]]()[ASM Tutor[NASM]]()Introduction to x86 assembly language by Davy on youtubeOMU x86_64 lessonsThe Art Of AsmIntel x64 manualsCompiler Explorer: Making C programs and reading the disassembly always helps to match patterns.Article by 0x44 re for dummies to be able to reverse basic crackmes.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.
Read the Dragon Book.Crafting Interpreters is a good one for beginners.Language Implementation Patterns provides some good insights on the workings of compilers.Stanford Notes CS143 Good assignments and notes related to compiler design.CMU slides and ProjectsAwesome CompilersMake a Language in RustRust Parsing BasicsMake a tree walk interpreted programming language.Also try to implement a bytecode engine for your interpreter, try out some optimizations and GC.You can also emulate machines like Chip8 or Nes. - Emulation requires knowledge of and graphics programming.
- You can use SDL as an IO/graphics/sound engine.
Try to make a compiled programming language targetting one architecture.Learn about the LLLL in RustTry to follow the ll to make your first programming language using ll.Try to make a Just In Time Compiler around the bytecode engine, detect hot regions and JIT them.My discord server lang-deExploitation
Prerequisites include experience with assembly.
ike: Systems Hacking Handbookpwn.college is the best learning resource I got so far for exploitation. From assembly to kernel exploitation, it covers it all.Introduction to exploit deNightmare: Intro to binary exploitation based around CTFs.CS6265: Reverse Engineering and Binary Exploitation LabOMU exploitation labsLi's binexp series on youtubeTutorial by 0xinfectionExploit dev on the infosec referenceROP EmporiumWindows Stuff - Windows x64 re
- Win32 API programming
- Windows exploit dev
- Cazz's Youtube channel
- Game hacking academy
After learning about some exploitation, you can solve CTFs now. Some of them include: - pwnable.kr
- Exploit Education VMs
- O wargames co exploitation
- HackTheBox challenges based on binary exploitation
Browser Hacking
Prerequisites include high le of , and solid understanding and experience with Compiler Engineering
De - Create a basic html dom parser Rust
- Toy browser engine, Browser engine from scratch
- Ja bytecode Kling
- Browser Parsing & JS AST Andreas Kling
- Inside look at modern browser
- Blogs to follow: V8, MozHacks, Webkit
- Docs: Firefox, Chromium, Webkit Wiki
- Compiler Compiler: A Twitch series about working on a Ja engine
- Graphics: Choose a 2d graphics lib for your language or platform.
You can surely use OpenGL or ?!? to render your innocent CSS but trust me it is not worth it.
- Skia is a good one for Linux and android (chrome uses it on Android)
- Direct2D yeah windows only.
- Cairo and Blend2D These are cross platform, worth looking into.
- High-performance gc for V8
- Ad in JIT compilation
- Speculation in Ja
- Network Programming Rust Networking, Rust std::net, C
- After learning about parsing, rendering, and JIT, you can now make your own browser with basic APIs and minimal features, following the whatwg standards
Exploitation: A great way to understand how a browser works is to try to hack it: (prerequisites include solid binary exploitation skills) - Browser Exploition series by Li | Written
- Web Assembly Hacking talk Black Hat
- Browser pwn on github
- Web Browser Exploitation- Uni of Florida
- Go through writeups of CVEs or CTF challenges based on browsers or runtime envs.
Malware
Prerequisites include a high-le of windows and solid reverse engineering skills.
Practical Malware AnalysisMalware analysis bootcamp by hackersploitCS5138 Malware Analysis, UCSliver C2 tutorialPrelude's liCr0w's Youtube ChannelAfter learning the basics of malware re and behavior, you can now move to reverse some real samples of those.Labs by Malware Unicorn - The largest collection of malware source code, samples, and papers on the internet.Malware section from the infosec referenceMalware BazarOS Fundamentals
I'm not quite sure that I want to get into kernel de (yet) but the concepts seem cool and its a good idea for a project. Make sure to read the requirements before getting started.
OS Dev Wiki is the go-to place if you want to learn about OS. It's well documented and also helps eyes to bleed.Linux Kernel LabsTutorials Section from awesome OS on githubBroken Thorn's TutorialOS in 3 piecesLittle OS BookBlog OS: Writing an OS in RustBootlin Slides and Labs539kernel: A Journey in Creating an OS KernelStuff to work on: - Haiku
- React OS
- The Eudyptula Challenge
- Redox
- More rust projects
Awesome OS on githubMy discord server's OS de to get some more resources and books.Lists of to study while making progress in compiler engineering and Browser de:
How to build a machineJS internals, V8's bytecodeDart J main, J I, J BeginnersCollecti
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.项目信息
开发语言:未知
Star 数:603
技术要点
该项目属于病毒分析方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕A roadmap to teach myself compiler dev, malware reverse engineering, exploitation and kernel dev fundamentals展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
使用与学习建议
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
免责声明
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。