Ich hab mich mal zum Spaß hingesetzt und wollte ein Messagebox-Hallo-Welt-Programm für Win32 so klein wie möglich gestalten. Nun, ich hab mich hingesetzt, und lediglich mit einem Hex-Editor soetwas gemacht. Das Ding hatte 632 Bytes, wobei die .text-Section bei 0x200 begann. Aber, nachdem ich den PE Header geschrieben und auf Speichern geklickt habe, wurde die Datei sofort von Norton gelöscht mit der Meldung, es sei ein Trojaner "Bloodhound.Win32.P", was natürlich vollkommener Schwachsinn ist. Ich ließ dann die .text-Section bei 0x400 beginnen (verschwendete dadurch 512 Bytes, was mir ehrlich gesagt sehr weh tut) und - Tada -, es ging. Die Datei hat jetzt 1144 Bytes. Tja, bei mir ging/geht es. Einige andere, die das Programm getesten haben, haben aber auch Virusmeldungen bekommen. Als ich die Datei bei VirusTotal.com getestet habe, haben einige Scanner auch wieder Meldungen ausgespuckt:
Avira AntiVir: "TR/Dropper.Gen"
F-Secure: "Suspicious:W32/Malware!Gemini"
Sunbelt: "VIPRE.Suspicious"
Webwasher-Gateway: "Trojan.Dropper.Gen"
Die Datei ist aber 100%ig nicht infiziert.
Als ich dann die .text-Section bei 0x1000 beginnen ließ und das jede Section 0x1000 Bytes groß sein ließ, regte sich kein Scanner mehr auf, die Datei hatte dann aber auch stolze 12 KB.
Nun frage ich mich - wieso stufen Anti-Viren-Programme derart minimalistische Dateien als schädlich ein und finden dort vermeintliche Trojaner?
Hier mal die Version mit 1144 Bytes, wo es Virusmeldungen gab (die 632-Byte-Version wird mir ja leider immer wieder gelöscht): http://cherry1.ch.funpic.de/msgbox.exe
Der interne Aufbau dieser Version ist folgender:
Entrypoint: 0x400
Imagebase: 0x400000
Ich habe bei den Sections die virtuelle Position/Größe genau gleich wie die echte sein lassen.
.text-Section:
Offset: 0x400
Größe: 0x12 Bytes
Inhalt:
6A 00 ... push 0
6A 00 ... push 0
68 12044000 ... push 0x400412 (Adresse vom "Hello World!"-String)
6A 00 ... push 0
FF15 4C044000 ... call dword ptr ds:[0x40044C] (Adresse von MessageBoxA aus Import-Table lesen und callen)
C3 ... retn
.data-Section:
Offset 0x412
Größe: 0x0D Bytes
Inhalt:
"Hello World!" + ein NULL-Byte
noch 1 Byte frei dazwischen (NULL)
.rdata-Section:
Offset 0x420
Größe: 0x56 Bytes
Import-Table ab 0x420; 0x28 Bytes lang
IAT ab 0x44C; 0x08 Bytes lang
Imports:
MessageBoxA aus user32.dll, Thunk Offset: 0x44C
Den DOS-Header hab ich btw leergelassen (lauter NULL-Bytes).
Hat jemand eine Ahung, was da auf einen Trojaner hindeuten soll?
mfG Cherry