The x86_64 Assembly Language Programming course is a hands-on, intensive program designed to equip students with deep knowledge of low-level system programming using 64-bit assembly on Linux. Starting from the fundamentals of CPU architecture, memory addressing, and instruction sets, the course takes learners through the core principles of writing, assembling, linking, and debugging assembly code using the NASM assembler and the System V AMD64 calling convention. Students will gain a foundational understanding of how modern programs interface directly with hardware and the Linux kernel through system calls.
Beyond basic syntax and logic, the course emphasizes practical skills in debugging and reverse engineering. Learners will use powerful tools such as GDB for live debugging, Ghidra for advanced decompilation and static analysis, Radare2 for binary inspection and patching, and EDB for GUI-based analysis. These tools will help students trace control flow, inspect register values, analyze memory usage, and reverse engineer compiled binaries—skills highly valued in cybersecurity, malware analysis, embedded systems, and exploit development.
By the end of the course, students will be able to write and debug complex assembly routines, develop custom shellcode, reverse engineer stripped binaries, and understand the inner workings of executable files at the binary level. Capstone projects such as creating syscall-only programs, analyzing unknown binaries, and injecting shellcode into test programs will help reinforce theoretical knowledge with real-world practice. This course is ideal for cybersecurity professionals, system programmers, ethical hackers, and anyone aiming to master low-level software engineering and reverse engineering on modern 64-bit Linux systems.
To ensure students gain the most from this advanced x86_64 Assembly course, the following prerequisites and setup are recommended:
Upon successful completion of the x86_64 Assembly Language Programming course at The Geek Institute of Cyber Security, students will gain the following professional skills and practical experience that are essential for a career in Debugging and Reverse Engineering: