Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP) (https://www.delphipraxis.net/104996-adresse-einer-funktion-ohne-%40-ermitteln-evtl-ueber-cs-ip.html)

Apollonius 14. Dez 2007 21:30

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Hat das irgendwas mit diesem Thread zu tun? Dein letzter Beitrag hört sich nämlich nach dem selben Problem an, auch wenn du Vista nicht erwähnst.

Hast du in deiner Exe eigentlich funktionierende globale Variablen? Dann könnte man die Image-Base nämlich ausschließen, da globale Variablen ja wie Funktionszeiger absolut adressiert werden.

Zacherl 14. Dez 2007 22:25

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
@Apollonius: Ja da hatte ich mich schonmal mit der Sache beschäftigt. Globale Variablen funktionieren ..

OldGrumpy 14. Dez 2007 22:27

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Ob es an der geänderten Image Base liegt, kannst Du doch ganz simpel ausprobieren, indem Du die eingebettete Exe standalone startest. Wenn das auch nur Fehler 193 liefert, dann verweigert Vista wohl einfach Exen die nicht bei $00400000 im Speicher anfangen. Warum muss es denn überhaupt eine komplette Exe sein? Kannst Du nicht einfach etwas relevanten Code in eine frei relozierbare Form bringen und einfach irgendwo im Speicher ausführen? Ich kann Dir da gerne helfen, dazu muss ich dann mir aber natürlich den ganzen Kram anschauen.

Zacherl 15. Dez 2007 12:56

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Also es scheint nicht an der ImageBase zu liegen, da das Programm normal ausgeführt keinerlei Fehler verursacht. Aber auch wenn meine eigene ImageBase 0x004000000 ist und ich das Programm aus der Resource ausführe bekomme ich 193 wenn ich versuche CreateThread aufzurufen .. es muss irgendeinen Grund geben, den ich bisher übersehen habe.

sirius 15. Dez 2007 13:09

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Wir können ja leider nicht testen (mir fehlt schonmal das BS dazu). Aber gib doch mal aktuelle Adressen des Codes aus, oder sende es per Message. Kannst du mit dem@-Operator die Adresse einer anderen Funktionsvariablen (var x:function(...)) zuweisen und diese dann starten?

Zacherl 15. Dez 2007 13:13

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

Delphi-Quellcode:
function ThreadProc(P: Pointer): Cardinal; stdcall;
begin
  MessageBox(0, 'Thread', 'Info', MB_SYSTEMMODAL);
  Result := 0;
end;

var
  X: function(P: Pointer): Cardinal; stdcall;

...

  @X := @ThreadProc;
  X(nil);
Ja das funktioniert :)

sirius 15. Dez 2007 13:18

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
hmmm :roll:
Jetzt könnte man noch schauen, wie sieht der Stack aus vor dem Aufruf con CreateThread, und wie die Sprungadresse. Und dass dann vergleichen... Wird ja immer umständlicher.

Zacherl 15. Dez 2007 14:01

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Wie kann ich das nachgucken? Mit OllyDbg? Weil ich starte ja praktisch den Prozess neu und injiziere dann den Code der EXE aus der Resource.

sirius 15. Dez 2007 19:03

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Erhlich gesagt: keine Ahnung :pale: Aber irgendetwas muss ja anders sein.

OldGrumpy 16. Dez 2007 09:58

Re: Adresse einer Funktion ohne @ ermitteln (evtl über CS:IP
 
Ich muss mir noch den grundlegenden Artikel mit dem inmemexe durchlesen, bin gerade bei meinen Eltern zu Besuch :) Aber hast Du auch dafür gesorgt, dass die injizierte Exe mit allen notwendigen Imports und Relocs versehen wird? Allerdings würd das nicht direkt erklären warum das auf XP geht und auf Vista nicht. Handelt es sich eigentlich um ein 32-Bit oder 64-Bit Vista?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr.
Seite 2 von 6     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz