Grundlæggende reverse engineering og binæranalyse · Lektion

Binær diffing og patchanalyse

Bliv fortrolig med teknikker til at sammenligne forskellige versioner af binære filer for at identificere ændringer og analysere sikkerhedspatches.

Lektion 2 af 411 trin

Binær diffing og patchanalyse 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.

Hvad er binær diffing?

Velkommen til binærsammenligning og analyse af rettelser! Inden for reverse engineering har vi ofte brug for at sammenligne to versioner af et program uden adgang til den oprindelige kildekode.

Binærsammenligning er processen med at identificere forskelle mellem to kompilerede eksekverbare filer. Tænk på det som en "find forskellene"-leg for computerprogrammer!

Denne teknik er afgørende for at forstå, hvordan software ændrer sig over tid, især ved analyse af sikkerhedsopdateringer eller udviklingen af malware.

Hvorfor sammenligne binære filer?

Binærsammenligning giver værdifuld indsigt i ændringer af software. Her er nogle vigtige anvendelser:

  • Analyse af sikkerhedsrettelser: Forstå præcis, hvilke sårbarheder en softwareopdatering afhjælper.
  • Udvikling af malware: Følg, hvordan malwarefamilier ændrer deres taktikker og kode på tværs af versioner.
  • Softwareopdateringer: Opdag nye funktioner eller utilsigtede ændringer, der introduceres i en programopdatering.
  • Teknisk analyse: Sammenlign mistænkelige filer med kendte, legitime versioner for at identificere manipulation.

Typer af binære sammenligninger

Binærsammenligning handler ikke kun om at sammenligne bytes. Værktøjer bruger forskellige strategier:

  • Binærsammenligning på byteniveau: Dette er den enkleste form, hvor filer sammenlignes byte for byte for at fremhæve præcise forskelle. Det er hurtigt, men kan være misvisende på grund af ændringer i compileren.
  • Binærsammenligning på funktionsniveau: Mere avancerede værktøjer sammenligner funktioner ud fra deres struktur, kontrolflowgrafer (CFG'er) og instruktionsmønstre. Det kan identificere lignende funktioner, selvom deres bytekode er en smule forskellig.
  • Semantisk sammenligning: De mest avancerede teknikker forsøger at forstå kodens betydning eller hensigt og identificerer funktionelle ændringer frem for kun strukturelle.

Værktøjer til binærsammenligning

Flere specialiserede værktøjer hjælper reverse engineers med binærsammenligning:

  • Ghidra: Dette gratis open source-værktøj, der er udviklet af NSA, har indbyggede sammenligningsfunktioner, som kan sammenligne funktioner og basisblokke.
  • IDA Pro (med BinDiff): IDA Pro er en kommerciel disassembler med et effektivt plugin kaldet BinDiff, som i vid udstrækning betragtes som en branchestandard til strukturel sammenligning.
  • radare2 (radiff2): Et open source-framework til reverse engineering, der indeholder radiff2 til binærsammenligning fra kommandolinjen.
  • Diaphora: Endnu et open source-værktøj med fokus på visuel sammenligning af funktioner.

Eksempel: Det oprindelige program

Lad os se på et simpelt C-program. Vi forestiller os, at dette er den første version af en softwareapplikation. Kopiér og kør det for at se dets output.

#include <stdio.h>

int main() {
    int user_input = 42; // Imagine this comes from user
    printf("Processing value: %d\n", user_input);
    return 0;
}

Eksempel: Det rettede program

Forestil dig nu, at der udgives en sikkerhedsrettelse. Udviklerne indså, at user_input ikke bør overskride en bestemt grænse for at forhindre problemer. Her er den "rettede" version:

Bemærk den tilføjede if-sætning, som validerer inputtet. Denne lille ændring vil ændre den kompilerede binærfil.

#include <stdio.h>

int main() {
    int user_input = 42; // Imagine this comes from user

    // Security patch: Validate input
    if (user_input > 100) {
        user_input = 100; // Cap at 100
    }

    printf("Processing value: %d\n", user_input);
    return 0;
}

Analyse af sammenligningsoutput

Når du kører et værktøj til binærsammenligning på de kompilerede versioner af vores oprindelige og rettede programmer, vil det fremhæve forskellene.

Du vil typisk se:

  • Funktioner, der matcher: Funktioner, som er identiske eller meget ens.
  • Funktioner, der ikke matcher: Funktioner, der findes i den ene binærfil, men ikke i den anden, eller som er blevet ændret markant.
  • Ændrede basisblokke: Specifikke instruktionsblokke i funktioner, der matcher, og som er blevet ændret.
  • Instruktionsforskelle: De præcise assemblerinstruktioner, der er blevet tilføjet, fjernet eller ændret.

Målet er at lokalisere de specifikke kodeændringer, som rettelsen har introduceret.

Fortolkning af sikkerhedsrettelser

Ved analyse af sikkerhedsrettelser er identificering af ændringerne kun det første trin. Den egentlige udfordring er at fortolke, hvorfor ændringerne blev foretaget, og hvilken sårbarhed de afhjælper.

Se efter mønstre som:

  • Nye kontroller af inputvalidering (som i vores eksempel).
  • Ændringer i allokering eller frigivelse af hukommelse.
  • Fjernelse af farlige funktioner eller kald.
  • Kontrol af grænser ved adgang til arrays.
  • Ændringer i kryptografiske implementeringer.

Disse spor hjælper dig med at forstå den oprindelige sårbarhed og kontrollere, om rettelsen virker efter hensigten.

Udfordringer ved binærsammenligning

Binærsammenligning er ikke altid ligetil. Compilere kan introducere mange små ændringer:

  • Compileroptimeringer: Forskellige optimeringsniveauer kan ændre den genererede assembler markant.
  • Flytning af kode: Funktioner eller data kan blive flyttet i hukommelsen, hvilket gør sammenligning på byteniveau vanskelig.
  • Obfuskering: Teknikker mod reverse engineering gør med vilje binærfiler sværere at sammenligne.

Avancerede værktøjer bruger sofistikerede algoritmer til at overvinde disse udfordringer med fokus på strukturelle og semantiske ligheder.

Hurtigt tjek: Fordele ved binærsammenligning

Binærsammenligning er en effektiv teknik inden for reverse engineering. Hvad er de primære fordele ved at udføre binærsammenligning?

Opsummering: Beherskelse af binære sammenligninger

Du har nu gennemgået de vigtigste begreber inden for binærsammenligning og analyse af rettelser!

  • Vi lærte, at binærsammenligning sammenligner to kompilerede programmer for at finde forskelle uden kildekode.
  • Det er afgørende ved analyse af sikkerhedsrettelser, sporing af malware og forståelse af softwareopdateringer.
  • Forskellige typer sammenligning (på byte- og funktionsniveau) samt specialiserede værktøjer som Ghidra og BinDiff hjælper med denne proces.
  • Fortolkning af outputtet betyder, at du skal forstå, hvorfor ændringerne blev foretaget, især ved sikkerhedsrettelser.

Denne færdighed er uvurderlig, når du vil opnå dyb indsigt i softwares funktion og sikkerhed.

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 “Binær diffing og patchanalyse” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende reverse engineering og binæranalyse, inklusive “Binær diffing og patchanalyse”, 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 “Binær diffing og patchanalyse”?

Bliv fortrolig med teknikker til at sammenligne forskellige versioner af binære filer for at identificere ændringer og analysere sikkerhedspatches. 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 “Binær diffing og patchanalyse”?

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. AI/ML i reverse engineering
  2. Binær diffing og patchanalyse
  3. Juridiske og etiske overvejelser
  4. Anti-reversing- og obfuskeringsteknikker
← Tilbage til Grundlæggende reverse engineering og binæranalyse