Grunnleggende om reverse engineering og binæranalyse · leksjon

Oversikt over CPU-arkitekturer

Få en forståelse av vanlige CPU-arkitekturer som x86, x64 og ARM, med fokus på registersett og instruksjonskjøring.

Leksjon 1 av 412 trinn

Oversikt over CPU-arkitekturer 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.

Velkommen til CPU-arkitekturer!

Velkommen til den fascinerende verdenen av CPU-arkitekturer! Å forstå hvordan ulike CPU-er er utformet, er avgjørende for alle som vil fordype seg i reverse engineering.

Tenk på det som å lære et datamaskinspråks «morsmål». Ulike CPU-er snakker ulike språk, og kunnskap om dem hjelper oss med å forstå instruksjonene deres.

Hva er en CPU-arkitektur?

En CPU-arkitektur definerer hvordan en Central Processing Unit (CPU) er bygget, og hvordan den behandler instruksjoner. Den omfatter:

  • instruksjonssettet (kommandoene CPU-en forstår)
  • antallet og typene registre (intern lagring)
  • regler for minnehåndtering

Disse elementene bestemmer hvordan programvare samhandler med maskinvaren, noe som er viktig for analyse.

Viktige komponenter: CPU, registre og minne

I hjertet av enhver datamaskin finner vi CPU-en, som utfører instruksjoner. Men den arbeider ikke alene!

  • Registre: Små, svært raske lagringsområder direkte inne i CPU-en, brukt til umiddelbare dataoperasjoner.
  • Minne (RAM): Større og langsommere lagring der programmer og data befinner seg når de ikke ligger i registre.

CPU-en flytter hele tiden data mellom registre og minne for å utføre oppgaver.

x86: Arbeidshesten for skrivebordet

x86-arkitekturen, som Intel var pioner for, har dominert personlige datamaskiner i flere tiår. Den er kjent for:

  • utforming basert på CISC (Complex Instruction Set Computing), der instruksjoner kan gjøre mye i én operasjon.
  • et instruksjonssett med variabel lengde.
  • relativt få generelle registre sammenlignet med enkelte andre arkitekturer.

Den var opprinnelig 16-bit og utviklet seg til 32-bit (ofte bare kalt x86), og støttes fortsatt i stor utstrekning.

x64: Utvidelse til 64-bit

x64 (også kjent som AMD64 eller Intel 64) er en 64-bit-utvidelse av x86-arkitekturen. Den ga betydelige forbedringer:

  • mulighet til å adressere langt mer minne (over 4 GB).
  • flere generelle registre (doblet fra 8 til 16).
  • bedre ytelse for mange programmer.

De fleste moderne stasjonære datamaskiner og servere bruker x64-prosessorer, samtidig som de beholder bakoverkompatibilitet med x86-programvare.

ARM: Mobilens mester

ARM-arkitekturen (Advanced RISC Machine) er svært utbredt i mobile enheter og innebygde systemer, og blir stadig vanligere i servere og stasjonære datamaskiner (for eksempel Apple M-serien).

Viktige kjennetegn:

  • utforming basert på RISC (Reduced Instruction Set Computing), med enklere instruksjoner med fast lengde.
  • optimalisert for energieffektivitet og ytelse per watt.
  • har et større og mer ortogonalt registersett enn x86.

ARMs utforming gjør arkitekturen ideell for batteridrevne enheter og bestemte innebygde bruksområder.

Registre: CPU-ens kladdeblokk

Uavhengig av arkitektur er registre CPU-ens raskeste lagring. De fungerer som små kladdeblokker CPU-en bruker til å holde data den aktivt arbeider med.

Det finnes ulike typer registre:

  • Generelle registre (GPR-er): Brukes til å lagre vilkårlige data, beregningsresultater eller minneadresser.
  • Spesialregistre: Har bestemte roller, for eksempel å peke på neste instruksjon eller håndtere stacken.

Det er svært viktig å forstå registre for å kunne følge programmets kjøring.

Vanlige x86/x64-GPR-er

I x86/x64 finnes blant annet disse vanlige generelle registrene (GPR-ene):

  • RAX/EAX: Brukes ofte til returverdier fra funksjoner.
  • RBX/EBX: Et generelt register for data.
  • RCX/ECX: Et generelt register som ofte brukes som teller.
  • RDX/EDX: Et generelt register som ofte brukes til data.

Prefikset «R» (for eksempel RAX) angir 64-bit-versjonen, mens «E» (for eksempel EAX) angir 32-bit-versjonen.

x86/x64-spesialregistre

I tillegg til GPR-ene har x86/x64 viktige spesialregistre som styrer programflyten:

  • RSP/ESP (Stack Pointer): Peker alltid på toppen av stacken og er avgjørende for funksjonskall.
  • RBP/EBP (Base Pointer): Brukes ofte til å referere til lokale variabler og funksjonsargumenter på stacken.
  • RIP/EIP (Instruction Pointer): Peker på minneadressen til den neste instruksjonen som skal utføres. Dette registeret styrer direkte hva CPU-en gjør videre!

ARMs registerfilosofi

ARM har et mer ensartet sett med 16 registre (R0–R15) tilgjengelig i brukermodus. Noen har spesialroller etter konvensjon eller på grunn av maskinvaren:

  • R0–R12: Generelle registre.
  • R13 (SP): Stack Pointer, tilsvarende x86s RSP.
  • R14 (LR): Link Register, lagrer returadressen for funksjonskall.
  • R15 (PC): Program Counter, peker på instruksjonen som utføres nå.

Denne utformingen legger til rette for enklere instruksjonsdekoding og effektiv kjøring.

Kjapp sjekk av arkitekturer

Hvilke av påstandene nedenfor beskriver egenskapene til x64- og ARM-arkitekturer, eller generelle CPU-konsepter, korrekt?

Arkitekturene avdekket: Oppsummering

Godt jobbet! I denne leksjonen har De fått en grunnleggende forståelse av ulike CPU-arkitekturer og kjernekomponentene deres.

  • Vi utforsket x86 (32-bit CISC), x64 (den 64-bits videreutviklingen) og ARM (RISC, med fokus på mobile enheter).
  • De har lært om den viktige rollen til registre (GPR-er og registre for spesielle formål) som CPU-ens raske interne lagring.
  • De fikk også en oversikt over hvordan Instruction Pointer leder CPU-en gjennom kjøringssyklusen.

Dette er viktig kunnskap for å forstå hvordan programmer kjører, og hvordan De kan analysere dem i kommende leksjoner!

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 «Oversikt over CPU-arkitekturer» gratis?

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

Få en forståelse av vanlige CPU-arkitekturer som x86, x64 og ARM, med fokus på registersett og instruksjonskjøring. 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 «Oversikt over CPU-arkitekturer»?

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. Oversikt over CPU-arkitekturer
  2. Datagjengivelse i binærfiler
  3. Vanlige binærfilformater
  4. Endianitet og byte-rekkefølge
← Tilbake til Grunnleggende om reverse engineering og binæranalyse