Entwerfen einer Befehlssequenz, damit sie etwas anderes ausführt, wenn sie mit einem Offset dekodiert wird

Diese Frage ist eine Fortsetzung vondiese Frage.

Um den Kontext dieser Frage festzulegen, ziehen Sie in BetrachtNullfreie Programmierung. Dies ist eine Technik, um eine Folge von Anweisungen (Shellcode) als Zeichenfolge zu maskieren. In der Programmiersprache C markiert das Byte 0 das Ende eines Strings, daher muss die Befehlssequenz so gestaltet sein, dass sie kein solches Byte enthält, da sie sonst durch die missbräuchliche String-Manipulationsfunktion abgeschnitten würde.

Die IA32- und x86-64-Befehlssätze ermöglichen mit ihren Befehlen variabler Länge ohne bestimmte Ausrichtung, dass Befehle für Aufgabe B mit einem Versatz innerhalb eines vorhandenen Befehlsstroms zum Ausführen von Aufgabe A decodiert werden. Diese Technikwurde verwendet Pünktlich in den frühen Tagen des Personal Computing (1980er Jahre), um Platz zu sparen.

Wurde die Technik des Einbettens von Code in Code, beginnend mit einem Versatz in der ersten Anweisung, bereits verwendet, um beispielsweise die Virenerkennung zu täuschen? Hat es einen Namen? Was ist ein Beispiel, wenn es nützlich ist und bereits verwendet wurde? Wenn der Angreifer zu Beginn den Code schreibt, reicht es aus, wenn Task A scheinbar harmlos nichts unternimmt. Dadurch bleibt möglicherweise genügend Spielraum, um alles zu tun, was man sich als Task B wünscht.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage