Assembly Language & x86 Low-Level Systems Programming · Pelajaran

Analisis Dinamis dengan Pelacakan dan Hooking

Melampaui disassembly statis: amati program saat berjalan menggunakan pelacakan system call, pelacakan pustaka, dan hooking fungsi untuk memahami perilaku sebenarnya.

Pelajaran 4 dari 413 langkah

Analisis Dinamis dengan Pelacakan dan Hooking adalah pelajaran Assembly Language & x86 Low-Level Systems Programming gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Assembly Language & x86 Low-Level Systems Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Assembly Language & x86 Low-Level Systems Programming mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Static vs Dynamic Analysis

Static analysis inspects a binary without running it (disassembly, strings). Dynamic analysis watches the program while it executes, revealing behavior that only appears at runtime, such as decrypted strings or network calls.

Why Dynamic Analysis Wins

Packed or obfuscated binaries hide their logic from a disassembler. But to actually do anything, the code must eventually run real instructions and make real syscalls — and that is exactly what dynamic tools capture.

System Call Tracing with strace

On Linux, strace logs every system call a process makes. It instantly shows files opened, network connections, and arguments passed to the kernel.

strace -f ./target            # follow child processes
strace -e trace=network ./bin # only network syscalls
strace -p 1234                # attach to running PID 1234

Reading strace Output

Each line is a syscall with arguments and return value:

openat(AT_FDCWD, "/etc/passwd", O_RDONLY) = 3

This reveals the program read /etc/passwd and got file descriptor 3 — behavior invisible in static text.

Library Call Tracing with ltrace

ltrace traces calls into shared libraries, like strcmp, malloc, or getenv. This is gold for cracking password checks where the comparison happens in libc.

ltrace ./crackme
# strcmp("hunter2", "letmein") = -1

Function Hooking

Hooking intercepts a function call to inspect or change arguments and return values. You redirect the original function pointer to your own code, do your work, then optionally call the original.

LD_PRELOAD Interception

On Linux you can override any libc function by exporting a replacement in a preloaded shared object. The loader resolves your symbol first.

export LD_PRELOAD=./myhook.so
./target            # calls now route through your hook

A Simple Hook in C

This overrides strcmp to log every comparison, then calls the real one via dlsym(RTLD_NEXT, ...).

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
#include <string.h>
int strcmp(const char *a, const char *b) {
    int (*real)(const char*, const char*) = dlsym(RTLD_NEXT, "strcmp");
    fprintf(stderr, "strcmp: %s vs %s\n", a, b);
    return real(a, b);
}

Hardware and Software Breakpoints

Dynamic debuggers use breakpoints to pause execution. A software breakpoint replaces a byte with 0xCC (INT 3). A hardware breakpoint uses the CPU debug registers DR0-DR3 and can also trip on memory reads/writes.

Instrumentation Frameworks

For heavy automation, frameworks like Frida and Intel Pin inject instrumentation at runtime. Frida lets you script hooks in JavaScript while the target runs — ideal for mobile and live analysis.

Anti-Debugging Awareness

Malware fights back. It may call ptrace(PTRACE_TRACEME) to detect a debugger, check timing, or scan for 0xCC bytes. Recognizing these checks is part of dynamic reverse engineering.

Quick Check

Test your dynamic-analysis knowledge.

Recap

You learned to analyze running programs:

  • Dynamic analysis reveals runtime behavior static tools miss
  • strace traces syscalls; ltrace traces library calls
  • Hooking via LD_PRELOAD or Frida intercepts function calls
  • Breakpoints (INT 3 / debug registers) and anti-debugging tricks shape the work
Gratis untuk memulai

Belajar Assembly dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Analisis Dinamis dengan Pelacakan dan Hooking” gratis?

Ya — teks lengkap “Analisis Dinamis dengan Pelacakan dan Hooking” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Assembly Language & x86 Low-Level Systems Programming, upgrade ke CoddyKit PRO. Kursus Assembly Language & x86 Low-Level Systems Programming mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Analisis Dinamis dengan Pelacakan dan Hooking”?

Melampaui disassembly statis: amati program saat berjalan menggunakan pelacakan system call, pelacakan pustaka, dan hooking fungsi untuk memahami perilaku sebenarnya. Kamu berlatih Assembly Language & x86 Low-Level Systems Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Assembly Language & x86 Low-Level Systems Programming?

Tidak diperlukan pengalaman sebelumnya. Assembly Language & x86 Low-Level Systems Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Analisis Dinamis dengan Pelacakan dan Hooking” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Assembly Language & x86 Low-Level Systems Programming ini?

Ya. Setiap pelajaran Assembly Language & x86 Low-Level Systems Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menggunakan GDB untuk Debugging Assembly
  2. Pengenalan Alat Disassembly
  3. Teknik Dasar Rekayasa Balik
  4. Analisis Dinamis dengan Pelacakan dan Hooking
← Kembali ke Assembly Language & x86 Low-Level Systems Programming