5 Stimmen

Einfacher polymorpher Motor

Ich muss einen einfachen polymorphen Motor programmieren. Ich benutze Linux (32-bit) und kann in Assembler und C programmieren. Ich weiß nicht, wie ich anfangen soll.

Können Sie mir ein Schema für den Aufbau einer solchen Maschine nennen? Meine Idee ist es, ein Programm zu machen, das:

  1. den Codeabschnitt einer Datei lesen
  2. verschlüsselt sie in einem Puffer,
  3. am Anfang Platz schaffen (ist das möglich?), um die Entschlüsselungsroutine einzufügen
  4. schreiben Sie den neuen Puffer in den Codeabschnitt des Programms.

Ist das richtig? Entspricht das dem Betrieb eines solchen Motors?

3voto

ruslik Punkte 14336

Das Grundschema ist ganz anders als das, was Sie beschrieben haben. Normalerweise wird nur der Virenkörper verschlüsselt und nicht der gesamte Codeabschnitt. Betrachten Sie einen einfachen Virus, der entweder den Codeabschnitt erweitert oder einen neuen für seinen Körper erstellt. Um ihn polymorph zu machen, müssen Sie nun eine Verschlüsselung hinzufügen und den Entschlüsselungscode nicht konstant machen, z. B:

1) zufällig Nops einfügen ( nop , add reg, 0 , push reg; pop reg , usw.)

2) Ändern Sie den Programmablauf mit ( jmp next , clc; jc next , usw.)

3) Anweisungen mit demselben arithmetischen Effekt verwenden ( add eax, 3 -> add eax, 9; sub eax, 6 )

Polymorph bedeutet, dass es eine feste Anzahl von Verschlüsselungen geben kann. Der einfachste Weg, eine solche zu erstellen, besteht darin, den Entschlüsselungscode in mehrere Blöcke aufzuteilen und für jeden Block mehrere Verschlüsselungen mit der gleichen Länge bereitzustellen.

EDIT: Ja, es ist ein Teil des Viruskörpers. Um ihn zu verwenden, legt man alle diese "Bausteine" in den Viruskörper, und wenn eine andere Datei infiziert wird, erstellt man eine zufällige Version des Dekriptors für sie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X