Tekniker för binärpatchning
Förstå hur binärfiler kan ändras och patchas statiskt för att förändra programmets beteende eller kringgå kontroller.
Tekniker för binärpatchning är en gratis lektion i Grunderna i reverse engineering och binäranalys på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i reverse engineering och binäranalys, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.
Vad är binärpatchning?
Binärpatchning är konsten att direkt ändra maskinkoden i ett kompilerat program utan tillgång till den ursprungliga källkoden. Tänk på det som att göra kirurgiska ändringar i en körbar fil.
Tekniken är viktig inom reverse engineering och gör det möjligt att ändra programmets beteende, rätta fel eller till och med kringgå säkerhetskontroller.
Vanliga användningsområden för patchning
Varför skulle ni patcha en binärfil?
- Felrättningar: Tillämpa brådskande rättningar utan att kompilera om programmet.
- Funktionsändringar: Ändra hur ett program fungerar eller lås upp dolda funktioner.
- Kringgå kontroller: Inaktivera licensvalideringar eller begränsningar i testversioner.
- Lokalisering: Ändra textsträngar för olika språk.
Viktiga verktyg för patchning
För att patcha binärfiler använder ni främst två typer av verktyg:
- Hexeditorer: För direkta ändringar på bytenivå. De visar rå hexadecimal- och ASCII-data.
- Disassemblerare: Som Ghidra eller IDA Pro, för att förstå assemblerkoden och identifiera var ni ska patcha.
Vi börjar med begreppen bakom hexredigering.
Använda en hexeditor
En hexeditor visar innehållet i en fil som hexadecimala tal i bas 16. Varje par hexadecimala siffror representerar en byte data. Ofta visas även ASCII-representationen.
Ni kan navigera med hjälp av adresser, söka efter specifika bytesekvenser eller texter och ändra byte direkt. Ändringarna sparas tillbaka i filen.
Ändra en sträng (koncept)
Program lagrar ofta meddelanden eller etiketter som enkla teckensträngar. I binärfilen representeras dessa strängar som en sekvens av byte.
Genom att hitta bytesekvensen för en sträng i en hexeditor kan ni ändra den så att ett annat meddelande visas när programmet körs.
Enkelt strängprogram
Betrakta detta enkla C-program. Efter kompileringen lagras texten "Hello CoddyKit!" någonstans i den körbara filen som en sekvens ASCII-byte.
Ni kan öppna den kompilerade binärfilen i en hexeditor, hitta dessa byte och till exempel ändra dem till "Hello Patcher!".
#include <stdio.h>
int main() {
char message[] = "Hello CoddyKit!";
printf("%s\n", message);
return 0;
}Inaktivera kod med NOP
Instruktionen NOP (No Operation) fungerar som en platshållare. Den talar om för processorn att inte göra någonting utan helt enkelt gå vidare till nästa instruktion.
Om ni vill inaktivera en instruktion eller ett litet kodblock utan att orsaka fel kan ni ersätta dess byte med opkoden för NOP-instruktionen, ofta 0x90 i x86/x64.
Ändra kontrollflödet
Program fattar beslut med hjälp av villkorliga hoppinstruktioner, till exempel "hoppa om lika med" eller "hoppa om inte noll". Dessa instruktioner styr programmets flöde.
Genom att ändra ett villkorligt hopp till ett ovillkorligt hopp, till exempel JMP, eller tvärtom kan ni tvinga ett program att alltid ta en viss väg och därmed kringgå kontroller eller ändra logiken.
Kringgå en kontroll
Föreställ er att ett program kontrollerar om en variabel är noll och avslutas om så är fallet. Assemblerkoden kan se ut så här:
TEST EAX, EAXJE Exit_Func
Om vi vill förhindra avslutningen kan vi ändra JE (Jump if Equal) till JNE (Jump if Not Equal), eller till och med ersätta JE Exit_Func med NOP-instruktioner om Exit_Func är kort.
Kontroll av patchningsteknik
När ni försöker inaktivera en specifik instruktion eller ett mycket litet kodblock i en binärfil utan att ändra programmets övergripande struktur eller orsaka krascher, vilken assemblerinstruktion används då vanligast?
Sammanfattning: binärpatchning
I den här lektionen har vi gått igenom tekniker för binärpatchning. Ni har lärt er:
- Vad binärpatchning är och vilka vanliga användningsområden den har.
- Vilken roll hexeditorer och disassemblerare har.
- Hur data, till exempel strängar, och logik, med hjälp av NOP och hopp, kan ändras.
Patchning kräver noggrann analys men ger kraftfulla möjligheter att interagera med kompilerad programvara!
Lär dig Assembly med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Tekniker för binärpatchning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i reverse engineering och binäranalys, inklusive ”Tekniker för binärpatchning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i reverse engineering och binäranalys innehåller totalt 4 lektioner.
Vad lär jag mig i ”Tekniker för binärpatchning”?
Förstå hur binärfiler kan ändras och patchas statiskt för att förändra programmets beteende eller kringgå kontroller. Ni övar på Grunderna i reverse engineering och binäranalys med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i reverse engineering och binäranalys?
Du behöver inga förkunskaper. Utbildningen i Grunderna i reverse engineering och binäranalys på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Tekniker för binärpatchning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i reverse engineering och binäranalys-lektionen?
Ja. Varje Grunderna i reverse engineering och binäranalys-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- IDAPython- och Ghidra-skriptning
- Automatisera återställning av datastrukturer
- Tekniker för binärpatchning
- FLIRT-signaturer och identifiering av biblioteksfunktioner