Down to the Metal

Free lesson 1 of 9 from Assembly & Low-Level — Speak the CPU’s language — registers, syscalls, and your own working shellcode.. No account, no card.

Everything is machine code in the end

C compiles to assembly; assembly assembles to the raw bytes the CPU executes. Reverse engineers read it, exploit developers write it, and malware analysts live in it. In this course you'll go from "what is a register" to writing working shellcode that talks straight to the Linux kernel.

🎯 Your kit

ls -la ~/asm/
cat ~/asm/README.txt        # the runner, the starter, and the capstone
nasm --version; gdb --version

~/asm/runsc executes raw machine code you pipe into it — your playground for running shellcode.

🎯 Challenge: Assemble and run the starter: nasm -f bin ~/asm/hello.asm -o /tmp/h.bin && ~/asm/runsc < /tmp/h.bin. What prints?
Show solution
cd ~/asm && nasm -f bin hello.asm -o /tmp/h.bin && ./runsc < /tmp/h.bin
# hello from ring 3

"Ring 3" = user mode. You just ran hand-written machine code that made a kernel call. That's the whole course in one line.

⚖️ Write and run code only in your lab or on systems you own.

Liked it? 8 more lessons are waiting.

9 lessons · knowledge checks · final exam · verifiable certificate · in-browser Live-Lab

Unlock all courses · CHF 9/month Buy only this course · CHF 19

What's in Assembly & Low-Level

Continue in the interactive course reader →