Zitat von
QpL
Versteh ich das richtig, dass die ganze "Magie" hinter Polymorphic Code ist, dass ich jedesmal z.B eine Extravariable mit irgendwelchen müll erzeuge
Nein das ist einfach Junkcode.
Ich zitiere mal die 1. beiden Sätze aus meinen geposteten Wikipedia Link:
In computer terminology,
polymorphic code is code that uses a
polymorphic engine to mutate while keeping the original
algorithm intact. That is, the code changes itself each time it runs, but the function of the code (its
semantics) will not change at all
Also du hast jetzt zB:
Eine andere Variante wäre dann
In beiden Fällen geschieht das Selbe ,aber es ist ein anderer Code.
Im Endeffekt wird eax dann 0.
Und das verändert sich bei jedem Start vom Programm.
Codevirtualisierung könnte dies möglich machen (Dizzy_D weiß dazu viel ).
Aber das Thema ist so komplex ,dass du ruhig einen eigenen Thread dazu aufmachen kannst.
//Edit:
Mir ist grad aufgefallen ,dass ich das 0815-Beispiel gebracht hab.
Also hier ein 2.:
Aus
wird
Code:
mov eax,0
add eax,ecx
und draus kann wiederum
Code:
xor eax,eax
sub eax,ecx
add ecx,ecx
add eax,ecx
werden.
Und so weiter und sofort.
Natürlich sollte der Code nicht bei jedme Ausführen wachsen ,daher sollte man nicht auf die einzelnen Befehle eingehen sondern mehr auf die Segmente.
So kann der Code zB dann Original um 1 byte länger als der veränderte sein.