Course Overview
Look at the details of the course, as well as its general prerequisites and intended audience.
We'll cover the following
GDB and debugging
The GNU debugger (GDB) is a popular debugger for Linux ARM64 (A64) systems and the skeleton of course is the same as its x64 Linux predecessor. It’s mainly used in C or C++ programs, though it supports other languages as well. This tool helps us trace and track modifications in different registers and memory locations during the execution of a program.
The architecture of Intel’s 64-bit CPUs is also known as just x64. The 64-bit version of the Advanced Risc Machine (ARM) architecture, also known as ARMv8-A, is primarily designed for smartphones and interconnected devices.
With the GDB, we can execute a program step by step and examine what is happening in the memory with each instruction or after a set of instructions. We can also monitor when a core dump happens, and when an error occurs in the program, we can tell which line caused that error.
In this course, we’ll discuss the practical foundation of ARM64 Linux debugging and how to disassemble simple assembly language programs. We’ll also discuss how to reconstruct C and C++ programs from GDB disassembly output.
Note: Every system has its own registers and memory values, so it is possible when we run the command, values are different from this course.
Prerequisites
This course will be very beneficial if you already have some basic knowledge of C, C++, and assembly languages.
Intended audience
This course will be most useful for, but not limited to:
- Software support and escalation engineers, cloud security engineers, SRE, and DevSecOps
- Software engineers coming from a JVM background
- Software testers
- Engineers coming from non-Linux environments, for example, Windows or Mac OS X
- Engineers coming from non-ARM environments, for example, x86/x64
- Linux C/C++ software engineers without assembly language background
- Security researchers without assembly language background
- Beginners learning the Linux software reverse engineering techniques