Zitat von
Zacherl:
//Edit 2: Verwende ich in den Microsoft Exen CreateThread ist der Fehler ERROR_BAD_EXE_FORMAT, verwende ich die native NtCreateThreadEx Funktion, welche erst unter Vista zur Verfügung steht, liefert SysErrorMessage: "%1 ist keine gültige
Win32 Anwendung!"
Das ist das gleiche in Grün, nur einmal als Fehlercode und einmal in eine Klartextfehlermeldung übersetzt.
Zitat von
Zacherl:
Ich hab mir eine
Unit nach dem InMemExe Prinzip gebastelt. Vielleicht hilft es dir, wenn du den Code siehst.
Ja, ich sagte ja ich muss mir den noch anschauen.
Zitat von
Zacherl:
//Edit 1: Ich bemerke grade etwas .. und zwar funktioniert der CreateThread aufruf unter Vista doch. Allerdings nur unter gewissen Vorraussetzungen. Zum Testen habe ich als Zielprozess die ganze Zeit notepad.exe verwendet. Jetzt habe ich testweise mal firefox.exe genommen und siehe da es funktioniert oO
Woran könnte das liegen? Ein extra Schutz für MS Dateien? Mit iexplore.exe funktioniert es auch nicht.
Das wäre nicht das erste Mal dass die Besonderheiten von MS-Exen zu seltsamen Effekten führen
Und wie ich oben schon erwähnte, müssen die Exen für diese Tauschaktion recht ähnlich sein. Auf jeden Fall muss das Characteristics-Field identisch sein. Bit 0 nicht gesetzt heisst zum Beispiel dass das File Relocations enthält. Wenn dann Exe und
PE-Header dazu im Konflikt stehen, könnte das schon ausreichen. JFTR: Meine notepad.exe (XP) hat auch nicht 0x00400000 als image base sondern 0x01000000
Allerdings Characteristics 0x010f, womit teilweise erklärt sein dürfte, warum es unter XP geht, aber nicht unter Vista.