Grunderna i x86/x64-assembler
Bekanta er med de grundläggande instruktionerna och syntaxen i assemblerspråken x86 och x64.
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 registretEBXtill registretEAX.MOV RCX, RDX: Kopierar värdet frånRDXtillRCX(64-bitarsversionen).MOV EAX, 123: Kopierar konstanten123till registretEAX.
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 isourcetill värdet idestinationoch lagrar resultatet idestination.SUB destination, source: Subtraherar värdet isourcefrån värdet idestinationoch lagrar resultatet idestination.
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 + EBXSUB RCX, 10:RCX = RCX - 10ADD RDX, R8:RDX = RDX + R8(med 64-bitarsregistretR8fö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 exempel123ett 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) ochSUB(subtrahera). - Begreppen direktvärden och operander.
Härnäst går vi djupare in på register och hur de samverkar med minnet!
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
- Grunderna i x86/x64-assembler
- Register och minnesoperationer
- Kontrollflöde och funktionsanrop
- Stacken och anropskonventioner