Grundlæggende reverse engineering og binæranalyse · Lektion

Omgåelse af foranstaltninger mod analyse

Opdag praktiske teknikker og værktøjer til at besejre anti-reverse-engineering-tricks og analysere beskyttet kode.

Lektion 2 af 410 trin

Omgåelse af foranstaltninger mod analyse er en gratis Grundlæggende reverse engineering og binæranalyse-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlæggende reverse engineering og binæranalyse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlæggende reverse engineering og binæranalyse-kurset indeholder 4 lektioner i alt.

Besejring af anti-analyse

Velkommen! I den forrige lektion lærte vi om forskellige teknikker til at forhindre reverse engineering (anti-RE). Nu er det tid til at slå igen!

Anti-analyseforanstaltninger er tricks, som udviklere (ofte malwareforfattere) bruger til at gøre det sværere for reverse engineers at forstå deres kode. De har til formål at:

  • Skjule programmets egentlige logik.
  • Registrere debuggere eller virtuelle maskiner.
  • Forhindre statisk analyse.

Vores mål er at finde praktiske metoder til at omgå disse beskyttelser og afsløre den underliggende funktionalitet.

Registrering af en debugger

Et af de mest almindelige anti-analyse-tricks er anti-debugging. Programmer kontrollerer, om de kører under en debugger.

Hvordan gør de det? De leder efter bestemte indikatorer:

  • API-kald: Funktioner som IsDebuggerPresent() (Windows) eller kontrol af processtatusflag.
  • Tidsmålinger: Kode, der køres under en debugger, er ofte langsommere, så programmet kan måle udførelsestiden.
  • Process Environment Block (PEB): En struktur i hukommelsen, der indeholder flag som BeingDebugged.

At forstå disse kontroller er det første skridt til at omgå dem.

Patching af simple kontroller

En enkel måde at besejre simple API-kald som IsDebuggerPresent() på er at patche binærfilen.

Når programmet kalder denne funktion, forventer det returværdien TRUE (debugger til stede) eller FALSE (ingen debugger). Vi kan ændre den eksekverbare fil i hukommelsen (eller på disken), så den altid returnerer FALSE.

Her er en konceptuel idé:

Original Code:
  call IsDebuggerPresent
  test eax, eax
  jne debugger_detected

Patched Code:
  mov eax, 0         ; Force return value to FALSE
  ; Original 'call' instruction is effectively skipped or NOP'd
  ; Execution continues as if no debugger was found

Skjulte debugging-metoder

Nogle anti-debugging-kontroller er mere komplekse. For at omgå dem kan vi få brug for teknikker til at skjule debuggere:

  • Ændring af PEB: Ændr manuelt flaget BeingDebugged i PEB til nul.
  • Nulstilling af NtGlobalFlag: Et andet flag i PEB (specifikt ved offset 0x68 i 64-bit Windows), som angiver debugging. Hvis du sætter det til nul, kan du omgå kontroller.
  • Debugger-plugins: Specialiserede plugins til værktøjer som IDA Pro eller x64dbg kan automatisere mange af disse omgåelser og gøre debuggeren "usynlig".

Optrævling af kodeflow

Tricks til anti-disassembly har til formål at forvirre værktøjer til statisk analyse og selv menneskelige analytikere. De manipulerer ofte programmets kontrolflow.

  • Ubrugelig kode: Indsættelse af irrelevante instruktioner, som ikke påvirker logikken, men gør analysen vanskeligere.
  • Uigennemsigtige prædikater: Betingede spring, hvor betingelsen altid er sand eller altid er falsk, men hvor disassembleren ikke let kan afgøre det, hvilket fører til forkerte flowgrafer.

Omgåelse af disse foranstaltninger kræver ofte manuel analyse for at identificere den rigtige sti eller brug af værktøjer, der kan evaluere disse prædikater.

Flugt fra virtuelle bure

Malware forsøger ofte at registrere, om den kører inde i en virtuel maskine (VM) eller et sandboxmiljø. Hvis det opdages, kan den nægte at udføre sin ondsindede payload.

Almindelige registreringsmetoder omfatter:

  • Kontrol af bestemte registreringsdatabasenøgler eller filer fra VM'en.
  • Søgning efter unikke hardwareidentifikatorer for VM'en (MAC-adresser og CPU-funktioner).
  • Måling af udførelsestider for CPU-instruktioner (VM'er kan være langsommere).

For at omgå dette kan du ændre VM-indstillinger, forfalske identifikatorer eller bruge specialiserede værktøjer, der får VM'en til at ligne en rigtig maskine.

Intelligent de-obfuskering

Det kan være tidskrævende manuelt at omgå hvert anti-analyse-trick. Det er her, automatiseret de-obfuskering kommer ind i billedet.

Teknikker som emulering (f.eks. med frameworks som Unicorn Engine) gør det muligt at udføre små, slørede kodestykker sikkert og observere deres virkelige adfærd uden at køre hele programmet.

Symbolsk eksekvering er en anden avanceret metode, der udforsker alle mulige udførelsesstier i et program og dermed hjælper med at afsløre skjult logik og evaluere komplekse betingelser.

Afsløring af IAT-hooks

Importadressetabellen (IAT) er en liste over funktioner, som et program importerer fra andre biblioteker (f.eks. Windows-DLL'er). IAT-hooking er et anti-analyse-trick, hvor malware ændrer denne tabel for at omdirigere legitime API-kald til sine egne ondsindede funktioner.

Sådan kan du omgå dette:

  • Undersøg IAT: Se efter usædvanlige adresser eller uventede spring.
  • Gendan oprindelige pointere: Værktøjer eller manuel patching kan føre IAT-posterne tilbage til adresserne på deres legitime biblioteksfunktioner.

Det afslører de faktiske API-kald, som programmet har til hensigt at foretage.

Udfordring: Omgåelse

Du analyserer et mistænkeligt program, der kontrollerer, om det kører under en debugger, ved hjælp af IsDebuggerPresent(). Hvis det registrerer en debugger, afslutter det med det samme.

Hvilken af følgende metoder er den mest direkte og almindelige måde at omgå netop denne anti-debugging-kontrol på under dynamisk analyse?

Vigtigste pointer

Godt arbejde! Du har udforsket forskellige strategier til at besejre anti-analyseforanstaltninger. Vi gennemgik:

  • Anti-debugging: Patching af API-kald, ændring af PEB-flag og brug af debugger-plugins.
  • Anti-disassembly: Genkendelse af og navigation gennem ubrugelig kode og uigennemsigtige prædikater.
  • Anti-VM/sandbox: Forfalskning af miljøkontroller for at narre ondsindet kode.
  • Avancerede teknikker: Begreber som automatiseret de-obfuskering via emulering og registrering af IAT-hooks.

Disse teknikker er afgørende for effektiv reverse engineering af beskyttet software. Bliv ved med at øve dig for at skærpe dine færdigheder!

Gratis at komme i gang

Lær Assembly med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Omgåelse af foranstaltninger mod analyse” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende reverse engineering og binæranalyse, inklusive “Omgåelse af foranstaltninger mod analyse”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlæggende reverse engineering og binæranalyse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Omgåelse af foranstaltninger mod analyse”?

Opdag praktiske teknikker og værktøjer til at besejre anti-reverse-engineering-tricks og analysere beskyttet kode. Du øver dig i Grundlæggende reverse engineering og binæranalyse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlæggende reverse engineering og binæranalyse?

Der kræves ingen tidligere erfaring. Grundlæggende reverse engineering og binæranalyse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Omgåelse af foranstaltninger mod analyse”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlæggende reverse engineering og binæranalyse-lektion?

Ja. Alle Grundlæggende reverse engineering og binæranalyse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Forståelse af obfuskeringsteknikker
  2. Omgåelse af foranstaltninger mod analyse
  3. Begreber inden for kernel-mode-debugging
  4. Omgåelse af packere og opnåelse af OEP
← Tilbage til Grundlæggende reverse engineering og binæranalyse