Grunderna i reverse engineering och binäranalys · Lektion

Grunderna i x86/x64-assembler

Bekanta er med de grundläggande instruktionerna och syntaxen i assemblerspråken x86 och x64.

Lektion 1 av 411 steg

Grunderna i x86/x64-assembler är en gratis lektion i Grunderna i reverse engineering och binäranalys på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i reverse engineering och binäranalys, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.

Vad är assembler?

Välkommen till assemblerspråkets värld! Det är det lågnivåspråk som människor vanligtvis kan läsa och skriva och som ligger närmast maskinnivån.

Det är en symbolisk representation av maskinkod, alltså de råa binära instruktioner som en dators processor (CPU) förstår och kör direkt. Se det som CPU:ns modersmål.

Reverse engineering på låg nivå

För reverse engineers är det avgörande att förstå assembler. När du analyserar ett kompilerat program har du sällan tillgång till den ursprungliga källkoden.

I stället granskar du programmets assemblerrepresentation. När du lär dig assembler kan du:

  • Förstå exakt hur ett program körs.
  • Identifiera funktioner, data och kontrollflöde.
  • Upptäcka dolda beteenden eller sårbarheter.

x86 jämfört med x64: skillnaden

När vi talar om x86/x64-assembler syftar vi på instruktionsuppsättningar för Intel- och AMD-processorer. Den viktigaste skillnaden är arkitekturens "bredd":

  • x86: Avser en 32-bitarsarkitektur.
  • x64: Avser en 64-bitarsarkitektur, även kallad AMD64 eller Intel 64.

x64 introducerar fler register och bredare databussar, men många grundläggande instruktioner är fortfarande likartade, ofta i utökade versioner.

Grundläggande instruktionsformat

Assemblerinstruktioner följer vanligtvis ett enkelt format: INSTRUCTION destination, source.

  • INSTRUCTION: Den operation som ska utföras (t.ex. flytta, addera eller subtrahera).
  • destination: Där resultatet av operationen lagras.
  • source: De data eller den plats som operationen ska utföras på.

Vissa instruktioner kan ha en operand eller inga operander alls. Ordningen (destination, source) är vanlig i Intel-syntax, som vi kommer att använda.

MOV-instruktionen

Instruktionen MOV är en av de mest grundläggande. Den står för ”move” och används för att kopiera data från en källa till ett mål.

Det är viktigt att notera att MOV inte ”klipper ut” eller tar bort data från källan. Den kopierar helt enkelt data och lämnar källan oförändrad.

Det allmänna formatet är: MOV destination, source

Exempel på MOV (konceptuella)

Vi tittar på några konceptuella exempel med MOV. Vi använder vanliga register i x86/x64, till exempel EAX, EBX och RCX. De är små lagringsplatser inuti processorn. Ni behöver inte bekymra er om deras exakta funktion ännu!

  • MOV EAX, EBX: Kopierar värdet från registret EBX till registret EAX.
  • MOV RCX, RDX: Kopierar värdet från RDX till RCX (64-bitarsversionen).
  • MOV EAX, 123: Kopierar konstanten 123 till registret EAX.

Aritmetik: ADD och SUB

Utöver att flytta data kan assembler utföra grundläggande aritmetiska operationer. Två vanliga sådana är ADD och SUB.

  • ADD destination, source: Adderar värdet i source till värdet i destination och lagrar resultatet i destination.
  • SUB destination, source: Subtraherar värdet i source från värdet i destination och lagrar resultatet i destination.

Dessa operationer ändrar destinationsoperanden direkt.

Exempel på ADD/SUB (konceptuella)

Här är några konceptuella exempel med ADD och SUB:

  • ADD EAX, EBX: EAX = EAX + EBX
  • SUB RCX, 10: RCX = RCX - 10
  • ADD RDX, R8: RDX = RDX + R8 (med 64-bitarsregistret R8 för allmän användning)

Observera hur destinationsoperanden uppdateras med operationens resultat.

Direktvärden och operander

I assembler är termerna ”operand” och ”direktvärde” viktiga:

  • Operand: Ett värde eller en plats som en instruktion arbetar med. Det kan vara ett register, en minnesadress eller ett direktvärde.
  • Direktvärde: Ett konstant värde som kodas direkt i själva instruktionen. I MOV EAX, 123 är till exempel 123 ett direktvärde.

Om ni förstår dessa termer blir det lättare att tolka vilken typ av data en instruktion hanterar.

Test av grunderna i assembler

Vilket av följande beskriver bäst funktionen hos instruktionen MOV i x86/x64-assembler?

Sammanfattning: Grunderna i assembler

Bra jobbat! Ni har nu tagit era första steg in i assemblerns värld för x86/x64-processorer.

Vi gick igenom:

  • Vad assembler är och varför det är viktigt vid reverse engineering.
  • Det grundläggande instruktionsformatet: INSTRUCTION destination, source.
  • Grundläggande instruktioner som MOV (kopiera), ADD (addera) och SUB (subtrahera).
  • Begreppen direktvärden och operander.

Härnäst går vi djupare in på register och hur de samverkar med minnet!

Gratis att börja

Lär dig Assembly med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Grunderna i x86/x64-assembler” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i reverse engineering och binäranalys, inklusive ”Grunderna i x86/x64-assembler”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.

Vad lär jag mig i ”Grunderna i x86/x64-assembler”?

Bekanta er med de grundläggande instruktionerna och syntaxen i assemblerspråken x86 och x64. Ni övar på Grunderna i reverse engineering och binäranalys med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Grunderna i reverse engineering och binäranalys?

Du behöver inga förkunskaper. Utbildningen i Grunderna i reverse engineering och binäranalys på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Grunderna i x86/x64-assembler”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Grunderna i reverse engineering och binäranalys-lektionen?

Ja. Varje Grunderna i reverse engineering och binäranalys-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i x86/x64-assembler
  2. Register och minnesoperationer
  3. Kontrollflöde och funktionsanrop
  4. Stacken och anropskonventioner
← Tillbaka till Grunderna i reverse engineering och binäranalys