Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#40

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP

  Alt 17. Dez 2007, 16:08
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?
  Mit Zitat antworten Zitat