Es tritt bei allen MS Executables auf. Egal ob Notepad, Calc, Cmd, IExplore, Explorer, etc .. das ist vollkommen egal. Ich versuche jetzt mal die BoundIAT zu nullen.
Zitat von
OldGrumpy:
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.
Ja stimmt. Meinte eigentlich, dass sich nun dieser Fehler mit: "Zugriff auf einen ungültigen Speicherbereich abwechselt"
// Edit 1: Das Nullen der IMAGE_DIR_ENTRYs bringt nichts. Und mir fällt noch etwas auf. Kopiere ich z.b. notepad.exe unter dem Namen notepad2.exe (oder irgeneinen Anderen), will die Datei nicht mehr starten
Es passiert einfach nichts.
// Edit 2:
Ich habs. Es liegt doch an der ImageBase -.- Ich bemerke grade, dass die MS Dateien alle die ImageBase 0x01000000 haben, mein Programm aber ganz normal 0x00400000. Setze ich die ImageBase von Notepad auf $00400000, dann lässt sich Notepad zwar nicht mehr starten, aber ich kann die Resource in den Prozess injizieren und CreateThread funktioniert auch. Nur möchte ich ja grade verhindern irgendwie die Dateien selbst zu verändern und sei es nur den Header anzupassen. Kann man den Code zum Injizieren nicht irgendwie anpassen, sodass an der richtigen ImageBase injiziert wird und die injizierte EXE Resource aber trotzdem noch die richtigen Adressen verwendet?