Det viktigste om debuggere (GDB, WinDbg)
Lær kjernefunksjonene i debuggere som GDB og WinDbg, inkludert tilkobling til prosesser og lasting av binærfiler.
Det viktigste om debuggere (GDB, WinDbg) er en gratis leksjon i Grunnleggende om reverse engineering og binæranalyse på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om reverse engineering og binæranalyse, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Møt debuggeren!
Velkommen til dynamisk analyse! Her skal De lære om debuggere, kraftige verktøy som lar Dem se et program i aksjon.
En debugger lar Dem sette et program som kjører på pause, undersøke den interne tilstanden (for eksempel minne og registre) og til og med endre kjøringsbanen. Det er som å ha røntgensyn for programvare!
Hvorfor bruke debuggere i RE?
Innen reverse engineering er debuggere avgjørende for å forstå hvordan et program oppfører seg under kjøring. Statisk analyse (der man ser på kode uten å kjøre den) gir Dem ledetråder, mens dynamisk analyse viser sannheten.
- Se faktiske dataverdier mens de endres.
- Observere hvilke kodebaner som følges.
- Forstå samspillet med operativsystemet.
GDB og WinDbg: verktøykassen Deres
Vi skal fokusere på to hoveddebuggere:
- GDB (GNU Debugger): Standarddebuggeren for Linux, macOS og andre Unix-lignende systemer. Den er kommandolinjebasert og svært allsidig.
- WinDbg: En kraftig debugger for Windows, som ofte brukes til debugging i kjernemodus og komplekse problemer i brukermodus. Den har både et grafisk grensesnitt og et kommandolinjegrensesnitt.
Grunnleggende debugger-handlinger
Uavhengig av hvilken debugger De bruker, vil De utføre noen grunnleggende handlinger:
- Laste inn en binærfil: Starte et program direkte under debuggerens kontroll.
- Koble til en prosess: Koble debuggeren til et program som allerede kjører.
- Undersøke tilstanden: Kontrollere minne, registre, stacken og andre programdata.
Laste inn med GDB: Eksempel
For å laste inn et program med GDB angir De vanligvis den kjørbare filen på kommandolinjen. La oss først kompilere et lite C-program:
#include <stdio.h>
int main() {
printf("Hello from GDB!\n");
return 0;
}Laste inn og kjøre i GDB
Etter at De har kompilert C-koden (for eksempel gcc -o hello hello.c), kan De laste den inn i GDB. Bruk deretter kommandoen run for å starte kjøringen.
GDB-kommandoer:gdb ./hello(gdb) run
Programmet kjøres, og GDB viser resultatet før De får tilbake GDB-ledeteksten.
Koble til en prosess med GDB
Noen ganger kjører et program allerede, og De trenger å feilsøke det mens det kjører. Det er her tilkobling kommer inn. De trenger programmets prosess-ID (PID).
Finn først PID-en (for eksempel ved å bruke ps aux | grep på Linux). Bruk deretter GDB med flagget -p:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Program running. PID: %d\n", getpid());
sleep(60); // Keep program alive for 60 seconds
printf("Program exiting.\n");
return 0;
}GDB-kommando for tilkobling
Kjør det forrige C-programmet i en terminal. Noter PID-en. Deretter kan De koble GDB til det fra en annen terminal:
GDB-kommando:gdb -p <PID_OF_YOUR_PROGRAM>
Når tilkoblingen er opprettet, settes programmet på pause. De kan deretter bruke GDB-kommandoer til å undersøke tilstanden, sette stoppunkter og fortsette kjøringen.
WinDbg: Laste inn og koble til
WinDbg tilbyr tilsvarende funksjonalitet for Windows. For å laste inn en binærfil kan De starte WinDbg og velge File > Open Executable, eller bruke kommandolinjen: windbg.exe -o myprogram.exe.
For å koble til en prosess som kjører, går De til File > Attach to a Process. Deretter ser De en liste over prosesser som kjører, med navn og PID, slik at De kan velge målet.
Rask sjekk!
De har lært om å laste inn programmer i debuggere og koble seg til dem. Hvilken GDB-kommando brukes til å starte et program som allerede er lastet inn i GDB?
Oppsummering: Det viktigste om debuggere
Godt jobbet! De har fått oversikt over de grunnleggende måtene å koble en debugger til et program på:
- Laste inn: Starte et nytt program direkte under debuggerens kontroll (for eksempel
gdb ./programog deretterrun). - Koble til: Koble til et program som allerede er aktivt (for eksempel
gdb -p <PID>).
Disse teknikkene er Deres inngang til dynamisk analyse og lar Dem observere og manipulere programmer i sanntid. Deretter skal vi se på hvordan De kan sette kjøringen på pause og gå gjennom koden trinn for trinn!
Lær deg Assembly med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Det viktigste om debuggere (GDB, WinDbg)» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om reverse engineering og binæranalyse, inkludert «Det viktigste om debuggere (GDB, WinDbg)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Hva lærer jeg i «Det viktigste om debuggere (GDB, WinDbg)»?
Lær kjernefunksjonene i debuggere som GDB og WinDbg, inkludert tilkobling til prosesser og lasting av binærfiler. Du øver på Grunnleggende om reverse engineering og binæranalyse med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om reverse engineering og binæranalyse?
Ingen tidligere erfaring er nødvendig. Grunnleggende om reverse engineering og binæranalyse på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Det viktigste om debuggere (GDB, WinDbg)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om reverse engineering og binæranalyse-leksjonen?
Ja. Alle Grunnleggende om reverse engineering og binæranalyse-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Det viktigste om debuggere (GDB, WinDbg)
- Sette bruddpunkter og stege gjennom kode
- Undersøke minne og registre
- Spore API- og systemkall under kjøring