Cyberlium

Reverse › Module 6 › Lesson 4

BeginnerModule 6Lesson 4/5

Lab — Dynamic

End-to-end dynamic RE pass on $RE_LAB crackme — GDB session, breakpoints, trace excerpt, execution notes tied to static work.

25 min+40 XP3 quiz
Module progress4 of 5

Visual · t23_dynamic_lab

Lab: dynamic RE on YOUR $RE_LAB crackme. Original Cyberlium.

Opening

Close one dynamic loop — static address to breakpoint to register proof — on a binary you are allowed to break.

On YOUR $RE_LAB crackme or CTF binary per brief: (1) verify hash and legal target; (2) load in GDB with static addresses from Module 5; (3) set ≥2 breakpoints at decision points; (4) run bounded trace (strace or ltrace) capturing ≥5 rows; (5) document one successful path observation: registers/flags at compare, branch taken, output string; (6) cross-link static Ghidra/objdump notes; (7) chmod 600 lab pack. No commercial software, no piracy patches, no anti-debug bypass beyond literacy documentation. Stop if target undocumented.

1. Lab pipeline

Static address → breakpoint → observe → trace excerpt → summary — same order builds RE habit.

Header: binary hash, $RE_LAB VM name, UTC session time.

Command guide

Try these commands — Lab pipeline

═══ TOOLS & WEBSITES ═══ Browse / read these (authorized learning only — stay in YOUR lab / program scope)

Dynamic RE lab — https://pwn.college/ (trace YOUR compiled toys) GDB cheat sheet — https://sourceware.org/gdb/current/onlinedocs/gdb.html/Command-Index.html objdump + gdb — https://man7.org/linux/man-pages/man1/objdump.1.html (static then dynamic)

═══ INSTALL ═══

Linux (Debian/Ubuntu):

Command — copy this

sudo apt install gdb
sudo apt install binutils

macOS:

Command — copy this

brew install gdb

Built-in (Xcode CLI) or brew install binutils

Windows: Use WSL gdb Use WSL binutils

═══ LINUX / macOS ═══

Command — copy this

export LAB_RE=${LAB_RE:-$HOME/cyberlium-lab/t23-re}
objdump -d "$LAB_RE/bin/branch" | grep -A15 '<pick>:' | head -17
gdb -q -batch -ex 'break pick' -ex 'run' -ex 'disassemble' -ex quit "$LAB_RE/bin/branch" 2>/dev/null | head -25
echo 'dynamic lab: YOUR toys only — never attach gdb to commercial binaries'

═══ WINDOWS ═══

Command — copy this

Write-Output 'Use WSL or lab VM for gdb on YOUR gcc toys — never commercial targets'

Primary tools to practice this lesson: gdb, objdump. Reference sites: Dynamic RE lab (https://pwn.college/); GDB cheat sheet (https://sourceware.org/gdb/current/onlinedocs/gdb.html/Command-Index.html); objdump + gdb (https://man7.org/linux/man-pages/man1/objdump.1.html). Run every command in the box — install first, then the usage lines — only on YOUR lab / program scope.

2. Evidence rows

Each row: breakpoint hit, register snapshot, branch outcome, correlated static label.

Distinguish observed vs inferred — honesty for reporting module.

3. Stop conditions

Stop if binary not crackme/CTF/YOUR toy, or brief forbids file class.

Refused: patch license on commercial binary in this lab — observe only.

4. What you ship: dynamic lab pack

GDB session log + ≥2 breakpoints + trace excerpt + execution summary — chmod 600.

5. What you record before the next lesson

Dynamic lab pack path.

6. Wrong vs right: commercial piracy vs crackmes/CTF toys

Worked failure — same MSF word, opposite target. Right never needs a café Wi-Fi or classmate laptop.

  • Wrong

    Dynamic lab on pirated commercial executable 'for practice.'

  • Right

    Dynamic lab pack on $RE_LAB crackme. Next: quiz.

Mission: dynamic lab

1) Verify hash and scope. 2) GDB with two breakpoints and register proof. 3) Trace excerpt ≥5 rows. 4) Cross-link static notes; chmod 600.

Stuck? Ask Cyberlium AI Mentor

Ask Mentor: “Minimum register proof for compare branch?”

Knowledge Check

1

APPLY: Dynamic lab scope:

Multiple choice

Knowledge Check

2

APPLY: True or False: Patch commercial license in dynamic lab earns credit.

True or False

Knowledge Check

3

APPLY: Dynamic lab pack includes:

Multiple choice

← Previous

Answer all 3 knowledge checks to continue. (0/3 answered)