Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
HSI
Hardware Software Interface (OER)
Labs
Lab 1 - Number Representation
Task: Conversions
Task: Rotations
Task: Binary Even and Hexadecimal Odd
Task: Length and Equality with Bitwise Operations
Task: Reversing a String
Reading: Binary and Hexadecimal Systems
Reading: Pointers in C
Lab 2 - Memory Operations. Introduction to GDB
Task: Task: Iterating through an Integer Array
Task: Deleting the First Occurrence of a Pattern from a String
Task: Pixels
Task: Find Maximum in Array
Task: Pointers
Task: Data Inspection
Reading: Pointers
Guide: Array vs. Pointer
Reading: GNU Debugger (GDB)
Guide: GDB Tutorial - Debugging a Segfault
Lab 3 - Toolchain. GOTO
Task: C - GOTOs
Task: Reverse - Old Hits
Writeup
Reading: C basics - GOTOs
Guide: C - Warm-up GOTOs
Reading: Reverse Engineering
Guide: Online C Compiling
Guide: Ghidra Tutorial - Decompiling
Lab 4 - Introduction to Assembly Language
Task: Conditional Jumps
Task: Grumpy Jumps
Task: Sets
Task: Min
Task: Fibonacci
Task: Carry Flag - Overflow Flag
Reading: Introduction
Reading: x86 Family
Guide: First Look at Assembly Instructions
Guide: Discovering Assembly
Lab 5 - Registers and Memory Addressing
Task: Division of Two Numbers
Task: Multiplying Two Numbers
Task: Sum of First N Natural Numbers Squared
Task: Sum of Elements in an Array
Task: Count Array Elements
Reading: Registers
Guide: Multiply and Divide
Guide: Floating Point Exception
Reading: Memory Addressing
Guide: Addressing Arrays
Guide: Declarations
Guide: Loop
Lab 6 - Structures, Vectors and Strings
Task: Fibonacci Sum
Task: Modifying a Structure
Task: Getter-Setter
Task: Finding a Substring in a String
Task: Mul-arrays
Task: Courses
Reading: Structured Data - Structures
Guide: Students
Reading: Structured Data - Arrays
Guide: Max
Lab 7 - The Stack
Task: Max
Task: Reverse Array
Task: Stack Addressing
Task: Local Var
Task: GCD - Greatest Common Divisor
Reading: Introduction to the Stack
Guide: Stack Operations
Guide: Stack Addressing
Lab 8 - Functions
Task: Displaying a String
Task: Displaying the Length of a String
Task: Displaying the Reversed String
Task: Implementing the toupper() Function
Task: Bonus: Rot13
Reading: Functions
Guide: Hello, World
Guide: Disassembling a C program
Lab 9 - The C - Assembly Interaction
Task: Maximum Calculation in Assembly with Call from C
Task: Corrupt Stack Frame Debugging
Task: Maximum Calculation in C with Call from Assembly
Task: Keeping Records
Task: Warning (No Error)
Task: Repair Export Problems
Task: Maximum Computation in Assembly with 64-bit C Call
Task: Maximum Calculation in C with Call from Assembly - 64 Bits
Reading: C - Assembly Interaction: Memory Perspective
Reading: C - Assembly Interaction: Stack
Lab 10 - Buffer Management. Buffer Overflow
Task: Buffer in the .data Section
Task: Buffer on the Stack
Task: Reading Data from Standard Input
Writeup
Task: Buffer Overflow with Data from Standard Input and fgets()
Task: Buffer Overflow for Program Written in C
Writeup
Task: Overwrite Return Address
Writeup
Task: Buffer Overflow for Binary
Writeup
Reading: Introduction to Buffers
Reading: Buffer Overflow Attacks
Lab 11 - Linking
Task: Linking Multiple Files
Task: Fixing the Entry Point 1
Task: Fixing the Entry Point
Task: Warning (not an Error)
Task: Fixing Export Issues
Task: Using Variables
Task: Using Symbols (Variables and Functions)
Task: Fixing Library Issues
Task: Linking an Object File (without Source Code)
Task: Linking a Single File
Reading: Linking
Guide: Linking C and C++
Lab 12 - CTF
Task: Hidden in Plain Sight
Solution
Task: Hidden in Plain Sight 2
Solution
Task: Look at Him Go
Task: Playing God
Solution
Task: Indirect Business
Solution
Task: RIP My Buffers Off
Solution
Task: Feeling Chained
Solution
Task: ROP
Solution
Reading: CTF
Contributing to Hardware Software Interface OER
Labs
Lab 8 - Functions
Lab 8 - Functions
Table of contents
Task: Displaying a String
Task: Displaying the Length of a String
Task: Displaying the Reversed String
Task: Implementing the toupper() Function
Task: Bonus: Rot13
Reading: Functions
Guide: Hello, World
Guide: Disassembling a C program