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.
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 -> HelloHva 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 0x00401a55Kallgrafer 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 recvGi 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 toSjekk 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
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
- Introduksjon til disassemblerere
- Identifisere funksjoner og data
- Analyse av kontrollflytgrafer
- Analyse av strenger og kryssreferanser