Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Enterprise-Grade Firmware Reverse Engineering
Introduction
Welcome(Same as Promo) (2:05)
Course Requirements
Orientation and Professional Operating Model
Course Overview and Structure (3:33)
Why Reverse Engineering Exists in Enterprise Settings (2:17)
Scope Boundaries Professional Ethics and Authorization (2:46)
Evidence Discipline Decision Logs and Documentation (2:36)
Creating Your Analysis Workspace (2:26)
Setting Up
Downloading CubeIDE (2:34)
Installing CubeIDE (2:38)
Getting the required documentation (7:41)
Getting the required package for bare-metal development (21:19)
Testing the project setup (15:54)
Firmware Artifacts, Formats and Acquisition
Module Overview: Firmware Artifacts Formats and Acquisition (1:14)
The ELF Format (1:08)
The BIN and HEX Formats (1:24)
What Each Format Reveals and Hides (1:32)
The Importance of Provenance and Integrity (1:18)
Read Out Protection and Option Bytes (4:55)
Overview of Firmware Acquisition with CubeProgrammer (3:30)
Programming : Updating_the_Workspace (3:20)
Programming : Capturing the Build Time and Date from the Toolchain (5:58)
Programming : Creating the Firmware Metadata Files (2:57)
Programming : Constructing the Firmware Metadata Block (6:06)
Programming : Implementing the Firmware Metadata C File (6:05)
Programming : Testing the Firmware Metadata Block (4:32)
Programming : Identifying the Firmware Metadata in the Flash Memory and Firmware Image (7:15)
Developing the Host-Side Artefacts Intake and Hashing Tools
Programming : Overview of the Case Workspace Initializer Tool (3:13)
Programming : Overview of the Professional Firmware Intake Tools (4:08)
Programming : Parsing the Command Line Arguments (8:17)
Programming : Writing Placeholder Texts for Target Files (2:43)
Programming : Implementing the Main Function of the Case Initializer Tool(Pt1) (11:11)
Programming : Implementing the Main Function of the Case Initializer Tool(Pt2) (8:10)
Programming : Overview of the Hash Manifest Generator Tool (2:20)
Programming : Capturing the Device Connect Logs and Option Bytes (6:58)
Programming : The Default Artefacts Intake Rows (7:29)
Programming : Creating Regex for Parsing Time and Key-Value Pairs (3:29)
Programming : Parsing the Command Line Arguments (5:11)
Cortex-M Boot Fundamentals
Module Overview- Cortex-M Boot Fundamentals (0:51)
Anatomy of the Vector Table (3:03)
The First 8 Bytes and Reset Flow (3:48)
The Reset Handler and C Runtime Setup (5:03)
Interrupt Model and NVIC Patterns (1:39)
The Boot Vector Extraction Process (2:57)
Memory Map Reconstruction
Module Overview- Memory Map Reconstruction (3:45)
Fash vs. SRAM- The Territory (1:28)
Understanding Alignment and Placement Patterns (2:18)
Section Analysis- .text .rodata .data and .bss (3:26)
Using Strings and Constants as Breadcrumbs (1:31)
Understanding Limitations in Optimized Builds (1:37)
Building a Memory Map (2:07)
Toolchain Fingerprints
Module Overview- The Toolchain Fingerprints (1:21)
The Compiler Fingerprints- GCC and Newlib (1:41)
CMSIS and HAL Pattern Recognition (1:46)
Understanding the Effects and Limitations of Stripped Binary (1:57)
What LTO Does to Code Shape (2:14)
Why No Symbols is NOT No Structure (1:55)
Comparing the Build Artifacts: BIN, ELF & HEX (2:02)
Building the Fingerprint Analysis (1:52)
Other Resources: Developing Some Generic Drivers
Programming : Enabling the Floating Point Unit (FPU) (18:00)
Programming : Developing a UART Driver - Analyzing the Documentation (11:35)
Programming : Developing a UART Driver - Listing out the steps (4:00)
Programming : Developing a UART Driver - Implementing the Initialization function (22:13)
Programming : Developing a UART Driver - Implementing the Write function (5:39)
Programming : Developing a UART Driver - Testing the Driver (6:39)
Programming : Developing the System Timebase - Analyzing the Documentation (8:28)
Programming : Developing the System Timebase - Implementing the Init. function (9:52)
Programming : Developing the System Timebase - The rest of the functions (12:15)
Programming : Developing the System Timebase - Testing the Timebase (5:34)
Programming : Developing a BSP for the Dev Board - Required functions (7:55)
Programming : Developing a BSP for the Dev Board - The LED Driver (5:01)
Programming : Developing a BSP for the Dev Board - The Button Driver (4:00)
Programming : Developing a BSP for the Dev Board - Testing the BSP (3:35)
Programming : Developing an ADC Driver - Analyzing the Documentation (5:21)
Programming : Developing an ADC Driver - Listing out the steps. (5:27)
Programming : Developing an ADC Driver - The Initialization function (13:21)
Programming : Developing an ADC Driver - The Read function (14:05)
Programming : Updating_the_Workspace
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock