Grunnleggende om reverse engineering og binæranalyse · leksjon

Introduksjon til disassemblerere

Kom i gang med bransjestandardiserte disassemblerere som Ghidra og IDA Pro for å vise assembly-kode.

Leksjon 1 av 411 trinn

Introduksjon til disassemblerere 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.

Hva er en disassembler?

Velkommen til disassemblernes verden! Dette er grunnleggende verktøy innen reverse engineering.

En disassembler er et program som oversetter maskinkode (de rå byte-verdiene en datamaskin forstår) til assemblerspråk. Tenk på det som å gjøre datamaskinens hemmelige språk lesbart for mennesker.

Hvorfor bruke en disassembler?

Disassemblere er avgjørende når du ikke har den opprinnelige kildekoden til et program. Her er grunnen:

  • Analyse av skadevare: Forstå hvordan skadelig programvare fungerer.
  • Sårbarhetsforskning: Finn sikkerhetsfeil i kompilerte programmer.
  • Proprietær programvare: Analyser hvordan applikasjoner med lukket kildekode fungerer.
  • Feilsøking: Undersøk programkjøringen i detalj på lavt nivå.

Fra maskinkode til assembler

Når du kompilerer et program, blir koden din på høyt nivå (for eksempel C++ eller Python) til maskinkode – en serie binære instruksjoner (0-er og 1-ere) som CPU-en kan kjøre direkte.

En disassembler gjør det motsatte. Den tar disse rå byte-verdiene og konverterer dem til assemblerspråk, som bruker mnemonics (korte, lett huskbare koder) som MOV, ADD eller JMP>, slik at programmets logikk blir synlig.

Bli kjent med Ghidra

En av de kraftigste og mest populære disassemblerne er Ghidra, som er utviklet av NSA og utgitt som åpen kildekode.

  • Gratis og åpen kildekode: Tilgjengelig for alle.
  • Dekompilator: Genererer pseudokode på høyt nivå (for eksempel C) fra assembler, noe som gjør analysen mye raskere.
  • Flere arkitekturer: Støtter ulike CPU-typer (x86, ARM, MIPS osv.).
  • Skripting: Automatiser oppgaver med Python eller Java.

Utforsk IDA Pro

IDA Pro (Interactive Disassembler Professional) er en annen ledende disassembler i bransjen, kjent for avanserte funksjoner og robuste analyseegenskaper.

  • Kommersiell: Regnes ofte som den «gullstandarden» innen profesjonell RE.
  • Kraftig analyse: Svært god til å identifisere funksjoner, data og kodestrukturer.
  • Omfattende programtillegg: Et stort økosystem av programtillegg utviklet av fellesskapet.
  • Debuggerintegrasjon: Bytt sømløst mellom statisk og dynamisk analyse.

Vanlige visninger i disassemblere

Selv om hvert verktøy ser forskjellig ut, viser disassemblere vanligvis flere viktige visninger:

  • Disassembly-visning: Hovedvinduet som viser assemblerinstruksjoner.
  • Hex-visning: Viser de rå byte-verdiene i den kjørbare filen.
  • Funksjonsliste: En liste over alle identifiserte funksjoner i programmet.
  • Kryssreferanser: Viser hvor data eller funksjoner brukes i koden.
  • Grafvisning: Visualiserer kontrollflyten (hvordan programmet hopper mellom kodeblokker).

Eksempel på et enkelt C-program

La oss se på et svært enkelt C-program. Når programmet kompileres, blir det gjort om til maskinkode, som en disassembler deretter kan konvertere tilbake til assembler.

Prøv å kjøre det for å se resultatet!

 #include <stdio.h>
 
 int add(int a, int b) {
     return a + b;
 }
 
 int main() {
     int x = 5;
     int y = 10;
     int sum = add(x, y);
     printf("The sum is: %d\n", sum);
     return 0;
 }

Slik ser en disassembler kode

For C-koden vi nettopp så, ville en disassembler vise assemblerinstruksjoner som utfører hvert trinn:

  • int x = 5; kan bli til en MOV-instruksjon (flytting) som plasserer 5 i et register eller på en minneadresse.
  • add(x, y); innebærer å legge x og y på stacken, etterfulgt av en CALL-instruksjon til funksjonen add.
  • return a + b; inne i add blir en ADD-instruksjon, og resultatet plasseres i et bestemt register.

Den bryter ned logikk på høyt nivå i små CPU-operasjoner.

Navigere i disassemblerte kode

Disassemblere tilbyr verktøy som gjør det enklere å navigere i komplekse programmer:

  • Søk: Finn bestemte strenger, byte-mønstre eller instruksjonssekvenser.
  • Bokmerker: Merk viktige kodeområder for rask referanse.
  • Kryssreferanser: Se enkelt hvor en funksjon kalles fra, eller hvor en variabel aksesseres.
  • Kommentarer: Legg til egne notater direkte i disassembly-visningen for å dokumentere funnene dine.

Disse funksjonene er avgjørende for å forstå store binærfiler.

Innsikt i disassemblere

Test kunnskapene dine om disassemblernes viktigste funksjoner og egenskaper.

Oppsummering: Introduksjon til disassemblere

De har tatt det første steget inn i statisk analyse!

  • Disassemblere konverterer maskinkode til assemblerspråk.
  • De er avgjørende for å forstå programvare uten kildekode.
  • Ghidra og IDA Pro er ledende verktøy på området.
  • Disassemblere tilbyr ulike visninger og navigasjonsverktøy som hjelper deg med å analysere kode.

Deretter skal vi gå dypere inn i hvordan man identifiserer bestemte funksjoner og data i disse disassemblerte binærfilene!

Gratis å komme i gang

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 «Introduksjon til disassemblerere» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om reverse engineering og binæranalyse, inkludert «Introduksjon til disassemblerere», 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 «Introduksjon til disassemblerere»?

Kom i gang med bransjestandardiserte disassemblerere som Ghidra og IDA Pro for å vise assembly-kode. 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 «Introduksjon til disassemblerere»?

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

  1. Introduksjon til disassemblerere
  2. Identifisere funksjoner og data
  3. Analyse av kontrollflytgrafer
  4. Analyse av strenger og kryssreferanser
← Tilbake til Grunnleggende om reverse engineering og binæranalyse