Assembly Programming for Security Professionals

Course Description

CYBV471 will provide students with an introduction to assembly language programming. Students will use hands-on labs and exercises to practice and implement applications developed in the x86-64 Assembly programming language. CYBV471 meets the National Security Agency (NSA) Center of Academic Excellence in Cyber Operations (CAE-CO) academic requirements for low-level programming.

Learning Outcomes

The student will:

  • Be able to develop programs that can be embedded into an OS kernel, with the required complexity and sophistication to implement exploits or patches for discovered vulnerabilities.
  • Define and explain binary, hexadecimal, integers and floating point numbers o Define and explain memory, memory mapping and the functions and uses of registers.
  • Identify and describe assembly programming math and bit operations.
  • Recognize the fundamentals behind branching & looping as well as functions.
  • Identify and evaluate arrays.
  • Characterize and differentiate 32 bit and 64 bit system calls in Linux and OS X.
  • Define and explain C stream I/O.
  • Identify and describe data structures.
  • Exercise critical thinking strategies including reasoning, problem solving, analysis and evaluation by:
    • Applying the fundamentals of assembly programing to create a functional, stand-alone assembly language program implementing a basic telnet client with no help from external libraries.