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.