Achne, als ob ich nicht wüsste, dass mir der
PE-Header nichts nützt.
Ich hab doch gesagt, dass der Entrypoint darin auf den Virus zeigt.
Der Virus besteht aus einem
Dll-Loader und einer Entschlüsselungsroutine. Erst wird die
Dll aus dem infizierten Code entschlüsselt, dann in den
RAM geladen und danach springt der Virus an den alten Code zurück. Ich hab drei infizierete Exe-Dateien disassembliert und genau diesen Loadercode extrahiert. Er ist sehr polymorphic, was heißt, dass der Programmierer des Viruses eine intelligente Asmroutine eingebaut hat, die mit dem Code rumspielt und ihn so in jeder infizierten exe unterschiedlich aussehen lässt, jedoch macht er aber das gleiche.
in einem infizierten Teil des Loaders steht z.B.
add eax, 4
in einer anderen infizierten Exe steht
add edx, 2
add edx, 2
Das ist nur ein kleines Beispiel wie er es fast unmöglich macht ohne integrierten Disassembler im Virusentferner den ursprünglichen Eintiegspunkt zu finden.
Eine Möglichkeit ist es, die Exe zu disassemblieren und den Block rauszusuchen, auf den kein Jump stattfindet. Vielleicht findet man 2-3 dieser Blöcke und kann dann testen auf welchem Block die Exe gestartet wird. Allerdings ist das für den Kernel nicht empfehlenswert, wenn irgendwelcher zufälliger Code ausgeführt wird
Was also tun?