De basis van reverse-engineering en binaire analyse · Les

Technieken voor binary patching

Begrijp hoe u binaire bestanden statisch kunt wijzigen en patchen om programmagedrag aan te passen of controles te omzeilen.

Les 3 van 411 stappen

Technieken voor binary patching is een gratis De basis van reverse-engineering en binaire analyse-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De basis van reverse-engineering en binaire analyse. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De basis van reverse-engineering en binaire analyse bevat in totaal 4 lessen.

Wat is binair patchen?

Binair patchen is het rechtstreeks aanpassen van de machinecode van een gecompileerd programma, zonder toegang tot de oorspronkelijke broncode. Zie het als het uitvoeren van chirurgische wijzigingen in een uitvoerbaar bestand.

Deze techniek is essentieel bij reverse-engineering: je kunt er programmagedrag mee aanpassen, fouten mee herstellen en zelfs beveiligingscontroles mee omzeilen.

Veelvoorkomende toepassingen van patchen

Waarom zou je een binair bestand patchen?

  • Fouten herstellen: Dringende oplossingen toepassen zonder opnieuw te compileren.
  • Functies aanpassen: Veranderen hoe een programma werkt of verborgen functies ontgrendelen.
  • Controles omzeilen: Licentiecontroles of beperkingen van proefversies uitschakelen.
  • Lokalisatie: Tekstreeks veranderen voor verschillende talen.

Essentiële tools voor patchen

Voor het patchen van binaire bestanden gebruik je voornamelijk twee soorten tools:

  • Hex-editors: Voor rechtstreekse wijzigingen op byteniveau. Ze tonen de onbewerkte hexadecimale en ASCII-gegevens.
  • Disassemblers: Zoals Ghidra of IDA Pro, om de assemblycode te begrijpen en vast te stellen waar je moet patchen.

We richten ons eerst op de concepten achter hex-bewerking.

Een hex-editor gebruiken

Een hex-editor geeft de inhoud van een bestand weer als hexadecimale getallen (grondtal 16). Elk paar hexadecimale cijfers vertegenwoordigt één byte aan gegevens. Vaak wordt ook de ASCII-weergave getoond.

Je kunt op adres navigeren, naar specifieke bytesequenties of tekst zoeken en bytes rechtstreeks aanpassen. Je wijzigingen worden terug in het bestand opgeslagen.

Een tekenreeks aanpassen (concept)

Programma's slaan berichten of labels vaak op als eenvoudige tekenreeksen. Deze tekenreeksen worden in het binaire bestand weergegeven als een reeks bytes.

Door de bytesequentie van een tekenreeks in een hex-editor te vinden, kun je deze wijzigen zodat het programma tijdens het uitvoeren een ander bericht weergeeft.

Eenvoudig tekenreeksprogramma

Bekijk dit eenvoudige C-programma. Na het compileren wordt de tekst "Hello CoddyKit!" ergens in het uitvoerbare bestand opgeslagen als een reeks ASCII-bytes.

Je kunt het gecompileerde binaire bestand openen in een hex-editor, deze bytes zoeken en ze bijvoorbeeld wijzigen in "Hello Patcher!".

#include <stdio.h>

int main() {
  char message[] = "Hello CoddyKit!";
  printf("%s\n", message);
  return 0;
}

Code uitschakelen met NOP's

De NOP-instructie (No Operation) werkt als een plaatshouder. De instructie vertelt de CPU niets te doen en gewoon naar de volgende instructie te gaan.

Als je een instructie of een klein codeblok wilt uitschakelen zonder fouten te veroorzaken, kun je de bytes ervan vervangen door de opcode van de NOP-instructie, vaak 0x90 op x86/x64.

De besturingsstroom aanpassen

Programma's nemen beslissingen met behulp van voorwaardelijke spronginstructies, bijvoorbeeld "spring als gelijk" of "spring als niet nul". Deze bepalen de stroom van het programma.

Door een voorwaardelijke sprong te wijzigen in een onvoorwaardelijke sprong, bijvoorbeeld JMP, of omgekeerd, kun je een programma dwingen altijd een bepaald pad te nemen. Zo omzeil je effectief controles of wijzig je de logica.

Een controle omzeilen

Stel je voor dat een programma controleert of een variabele nul is en wordt afgesloten als dat zo is. De assembly kan er als volgt uitzien:

TEST EAX, EAX
JE Exit_Func

Als we het afsluiten willen voorkomen, kunnen we JE (Jump if Equal) wijzigen in JNE (Jump if Not Equal), of zelfs JE Exit_Func vervangen door NOP's als Exit_Func kort is.

Controle van patchtechnieken

Welke assembly-instructie wordt het vaakst gebruikt wanneer je een specifieke instructie of een zeer klein codeblok in een binair bestand wilt uitschakelen zonder de algemene structuur van het programma te wijzigen of crashes te veroorzaken?

Samenvatting: binair patchen

In deze les hebben we technieken voor binair patchen verkend. Je hebt geleerd:

  • Wat binair patchen is en wat de meest voorkomende toepassingen ervan zijn.
  • Welke rol hex-editors en disassemblers spelen.
  • Hoe je gegevens, zoals tekenreeksen, en logica, met NOP's en sprongen, kunt aanpassen.

Patchen vereist een zorgvuldige analyse, maar biedt krachtige manieren om met gecompileerde software te werken!

Gratis beginnen

Leer Assembly met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Technieken voor binary patching” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad De basis van reverse-engineering en binaire analyse, waaronder “Technieken voor binary patching”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus De basis van reverse-engineering en binaire analyse bevat in totaal 4 lessen.

Wat leer ik in “Technieken voor binary patching”?

Begrijp hoe u binaire bestanden statisch kunt wijzigen en patchen om programmagedrag aan te passen of controles te omzeilen. Je oefent met De basis van reverse-engineering en binaire analyse door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met De basis van reverse-engineering en binaire analyse te beginnen?

Ervaring vooraf is niet nodig. De basis van reverse-engineering en binaire analyse op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Technieken voor binary patching”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over De basis van reverse-engineering en binaire analyse?

Ja. Elke les over De basis van reverse-engineering en binaire analyse bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. IDAPython- en Ghidra-scripting
  2. Herstel van datastructuren automatiseren
  3. Technieken voor binary patching
  4. FLIRT-signatures en identificatie van bibliotheekfuncties
← Terug naar De basis van reverse-engineering en binaire analyse