Eine spannende Reise: Ein selbstmodifizierendes C-Programm erstellen
2025-05-25
Dieser Artikel beschreibt die Erstellung eines C-Programms, das seinen eigenen Code zur Laufzeit verändern kann. Der Autor erklärt zunächst, wie Programmcode im Speicher abgelegt wird und wie man mit der Funktion `mprotect()` die Berechtigungen des Codesegments so ändert, dass es beschreibbar ist. Anschließend ändert der Autor durch Modifikation des unmittelbaren Werts einer `addl`-Instruktion das Ergebnis des Programms. Schließlich geht der Autor noch weiter und kopiert mit `memcpy()` einen Shellcode in das Codesegment des Programms, wodurch erfolgreich ein Shell-Befehl zur Laufzeit ausgeführt wird. Der gesamte Prozess ist technisch anspruchsvoll und erfordert ein fundiertes Verständnis der x86_64-Assembler-Sprache.
Entwicklung
Selbstmodifizierendes Programm