Grunnleggende om reverse engineering og binæranalyse · leksjon

Analyse av strenger og kryssreferanser

Bruk strenger og kryssreferanser (xrefs) som en snarvei til å forstå en binærfils formål og navigere mellom kode og data.

Leksjon 4 av 413 trinn

Analyse av strenger og kryssreferanser er en gratis leksjon i Grunnleggende om reverse engineering og binæranalyse på CoddyKit. Dette er leksjon 4 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.

Strenger er ledetråder

De kan disassemblere kode, identifisere funksjoner og lese kontrollflytg grafer. En av de raskeste måtene å orientere seg i en ukjent binærfil på er å lese strengene i den.

Feilmeldinger, URL-er, filbaner og formatsperifikatorer avslører hensikten før De har lest én eneste instruksjon.

Hente ut strenger

Det klassiske kommandolinjeverktøyet skriver ut sekvenser med utskrivbare tegn. Disassemblere som Ghidra og IDA har et eget Strings-vindu med adresser.

strings -a -n 5 target.bin
strings -e l target.bin   # 16-bit little-endian (UTF-16)

ASCII- og wide-strenger

Windows-binærfiler lagrer ofte tekst som UTF-16-strenger (wide-strenger), der hvert tegn består av to byte. Et naivt ASCII-søk finner dem ikke.

Kontroller alltid begge kodingene; hvis De overser wide-strenger, skjules halvparten av bevismaterialet.

ASCII:  48 65 6C 6C 6F          -> Hello
UTF-16: 48 00 65 00 6C 00 6C 00 -> Hello

Hva er en kryssreferanse?

En kryssreferanse (xref) kobler en plassering til alle stedene som refererer til den.

  • Code xref: en instruksjon som hopper til eller kaller denne plasseringen
  • Data xref: en instruksjon som leser fra eller skriver til denne adressen

Fra streng til kode

Det effektive grepet er å finne en interessant streng og deretter følge dens data-xref til koden som bruker den.

Hvis De finner strengen «Invalid license key» og hopper til xref-en, havner De ofte rett inne i lisenskontrollen.

; In Ghidra: right-click string -> References -> shows
; FUN_00401a30 loads this string at 0x00401a55

Kallgrafer fra xref-er

Xref-er viser også funksjonssammenhenger. Ved å liste opp hvem som kaller en funksjon (callers), og hvilke funksjoner den kaller (callees), bygger De en kallgraf.

Dette viser hvordan en viktig rutine passer inn i programmets overordnede struktur.

Importer som holdepunkter

API-importer er verdifulle xref-mål. Finn importen for connect eller CreateFileW, og følg deretter xref-en for å finne alle nettverks- eller filrutiner.

Dette retter analysen mot atferden De er interessert i.

; xrefs to 'recv' reveal all network read sites
0x00402100 call recv
0x004023f0 call recv

Gi nye navn og legg til kommentarer

Når xref-er avslører hensikten, kan De gi funksjoner nye navn og legge til kommentarer. FUN_00401a30 blir til check_license.

Gode navn gir en kumulativ effekt: Alle fremtidige xref-er kan nå leses som meningsfull pseudokode.

Strenger som villeder

Vær forsiktig: Strenger kan være avledningsmanøvre, død kode eller standardkode fra biblioteker. At en streng finnes, beviser ikke at funksjonen er tilgjengelig.

Bekreft med xref-er at strengen faktisk refereres til av aktiv kode.

Krypterte eller tilslørte strenger

Skadevare skjuler ofte strenger og dekrypterer dem under kjøring. Hvis strings hovedsakelig viser uforståelige tegn, bør De se etter en liten dekoderutine som det refereres til overalt; det er strengdekryptereren.

Ved å identifisere den åpner De resten av analysen.

Navigere med xref-lister

Disassemblere lar Dem hoppe gjennom xref-er interaktivt. Når De trykker på hurtigtasten for xref-er på en funksjon, vises alle callerne, og De kan følge kjeden opp til main.

Dette gjør en flat liste med adresser om til et navigerbart kart over programmet.

; IDA: place cursor on function, press X
; Ghidra: right-click -> References -> Show References to

Sjekk deg selv

De fant strengen «Invalid license key». Hva er det mest effektive neste trinnet for å komme til logikken for lisenskontrollen?

Oppsummering

Strenger og xref-er er et kraftig verktøy i statisk analyse:

  • Trekk ut ASCII- og UTF-16-strenger for å få kontekst umiddelbart
  • Følg data-xref-er fra strenger inn i viktig kode
  • Bruk import-xref-er og kallgrafer til å kartlegge strukturen
  • Vær oppmerksom på avledningsmanøvre og dekryptering av strenger under kjøring
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 «Analyse av strenger og kryssreferanser» gratis?

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

Bruk strenger og kryssreferanser (xrefs) som en snarvei til å forstå en binærfils formål og navigere mellom kode og data. 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 4 av 4.

Hvor lang tid tar leksjonen «Analyse av strenger og kryssreferanser»?

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