Teknikker til binær patching
Forstå, hvordan binære filer kan ændres og patches statisk for at ændre programmets adfærd eller omgå kontroller.
Teknikker til binær patching er en gratis Grundlæggende reverse engineering og binæranalyse-lektion på CoddyKit. Dette er lektion 3 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 patching?
Binær patching er kunsten at ændre maskinkoden i et kompileret program direkte uden adgang til den oprindelige kildekode. Tænk på det som at foretage kirurgiske ændringer i en eksekverbar fil.
Denne teknik er afgørende inden for reverse engineering, fordi den gør det muligt at ændre et programs adfærd, rette fejl eller endda omgå sikkerhedskontroller.
Almindelige anvendelser af patching
Hvorfor skulle du patche en binær fil?
- Fejlrettelser: Anvend presserende rettelser uden at kompilere igen.
- Funktionsændringer: Ændr, hvordan et program fungerer, eller lås skjulte funktioner op.
- Omgå kontroller: Deaktivér licensvalidering eller begrænsninger i prøveversioner.
- Lokalisering: Skift tekststrenge til andre sprog.
Vigtige værktøjer til patching
Til patching af binære filer bruger du primært to typer værktøjer:
- Hex-editorer: Til direkte ændringer på byteniveau. De viser rå hexadecimale data og ASCII-data.
- Disassemblere: For eksempel Ghidra eller IDA Pro, så du kan forstå assemblykoden og identificere hvor der skal patches.
Vi fokuserer først på principperne bag hex-redigering.
Brug en hex-editor
En hex-editor viser indholdet af en fil som hexadecimale tal (tal i base 16). Hvert par hexadecimale cifre repræsenterer én byte data. Den viser ofte også ASCII-repræsentationen.
Du kan navigere efter adresse, søge efter bestemte bytesekvenser eller tekst og ændre bytes direkte. Dine ændringer gemmes tilbage i filen.
Ændr en streng (koncept)
Programmer gemmer ofte meddelelser eller etiketter som simple tegnstrenge. Disse strenge repræsenteres som en sekvens af bytes i den binære fil.
Ved at finde en strengs bytesekvens i en hex-editor kan du ændre den, så programmet viser en anden meddelelse, når det kører.
Simpelt strengprogram
Overvej dette simple C-program. Efter kompilering gemmes teksten "Hello CoddyKit!" et sted i dets eksekverbare fil som en sekvens af ASCII-bytes.
Du kan åbne den kompilerede binære fil i en hex-editor, finde disse bytes og for eksempel ændre dem til "Hello Patcher!".
#include <stdio.h>
int main() {
char message[] = "Hello CoddyKit!";
printf("%s\n", message);
return 0;
}Deaktivér kode med NOP'er
Instruktionen NOP (No Operation) fungerer som en pladsholder. Den fortæller CPU'en, at den ikke skal gøre noget, men blot gå videre til den næste instruktion.
Hvis du vil deaktivere en instruktion eller en lille kodeblok uden at forårsage fejl, kan du erstatte dens bytes med opkoden for NOP-instruktionen (ofte 0x90 på x86/x64).
Ændr kontrolflowet
Programmer træffer beslutninger ved hjælp af betingede springinstruktioner (for eksempel "spring hvis lig med" eller "spring hvis ikke nul"). Disse bestemmer programmets flow.
Ved at ændre et betinget spring til et ubetinget spring (for eksempel JMP) eller omvendt kan du tvinge et program til altid at følge en bestemt sti og dermed omgå kontroller eller ændre logikken.
Omgå en kontrol
Forestil dig, at et program kontrollerer, om en variabel er nul, og afslutter, hvis den er det. Assemblykoden kan se sådan ud:
TEST EAX, EAXJE Exit_Func
Hvis vi vil forhindre afslutningen, kan vi ændre JE (Jump if Equal) til JNE (Jump if Not Equal) eller endda erstatte JE Exit_Func med NOP'er, hvis Exit_Func er kort.
Kontrol af patchingteknik
Når du forsøger at deaktivere en bestemt instruktion eller en meget lille kodeblok i en binær fil uden at ændre programmets overordnede struktur eller forårsage nedbrud, hvilken assemblyinstruktion bruges så oftest til dette formål?
Opsummering af binær patching
I denne lektion har vi gennemgået teknikker til binær patching. Du har lært:
- Hvad binær patching er, og hvad det almindeligvis bruges til.
- Hvilken rolle hex-editorer og disassemblere spiller.
- Hvordan du ændrer data (for eksempel strenge) og logik (ved hjælp af NOP'er og spring).
Patching kræver omhyggelig analyse, men giver effektive muligheder for at arbejde med kompileret software!
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 “Teknikker til binær patching” gratis?
Ja — alle 3 lektioner i læringssporet Grundlæggende reverse engineering og binæranalyse, inklusive “Teknikker til binær patching”, 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 “Teknikker til binær patching”?
Forstå, hvordan binære filer kan ændres og patches statisk for at ændre programmets adfærd eller omgå kontroller. 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 3 af 4.
Hvor lang tid tager lektionen “Teknikker til binær patching”?
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
- IDAPython- og Ghidra-scripting
- Automatisering af gendannelse af datastrukturer
- Teknikker til binær patching
- FLIRT-signaturer og identifikation af biblioteksfunktioner