Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionen externer Anwendungen aufrufen (https://www.delphipraxis.net/102251-funktionen-externer-anwendungen-aufrufen.html)

WordsBG 25. Okt 2007 15:50


Funktionen externer Anwendungen aufrufen
 
In letzter Zeit habe ich mich etwas näher mit dem Manipulieren des Speichers fremder Anwendungen auseinandergestzt. Nun habe ich aber einen Pointer auf eine interne Funktion in einer anderen Anwendung (um genau zu sein: Es ist ein in C++ geschriebenes Spiel), welche ich mit Parametern (vermutlich einem) aufrufen möchte. Wie genau man dies in Delphi allerdings umsetzen würde ist mir hierbei absolut nicht klar. Schätzungsweiße mit Assembler (ich kann Assembler verstehen, habe es aber schon seit einigen Jahren nicht mehr verwendet). Ein Handle auf den Prozess zum Zugriff auf den Speicher habe ich natürlich schon.

Hoffe jemand kann mir hier einen Lösungshinweiß geben. :wink:

-- WordsBG alias Patrick

Bernhard Geyer 25. Okt 2007 15:56

Re: Funktionen externer Anwendungen aufrufen
 
Funktioniert deine Hacker-Lösungen noch wenn der Speicherschutz bei XP/Vista aktiv ist bzw. schlagen da nicht Virenscanner an?

SirThornberry 25. Okt 2007 15:58

Re: Funktionen externer Anwendungen aufrufen
 
von deiner Anwendung kannst du die andere nicht direkt aufrufen weil die Speicheradresse in deinem Programm nicht gültig ist und wo ganz anders hinzeigt. Du musst deinen Programmcode zum aufrufen der anderen Funktion dann auch in dem anderen Prozess plazieren.

Apollonius 25. Okt 2007 16:23

Re: Funktionen externer Anwendungen aufrufen
 
Mir fallen da spontan drei Möglichkeiten ein:
1. Mit ReadProcessMemory die gesamte Funktion ins eigene Programm transferieren. Das ist allerdings ziemlich nutzlos, falls andere Funktionen oder globale Variablen verwendet werden. Außerdem müsstest du irgendwoher wissen, wie lang die Funktion ist. Diese Methode halte ich daher nicht für praktikabel.

2. CreateRemoteThread ist mir persönlich in diesem Fall sehr sympathisch: Sofern du nur einen Parameter hast und die Aufrufkonvention stdcall ist, kannst du direkt CreateRemoteThread aufrufen und als Thread-Funktion die gewünschte angeben, das Ergebnis solltest du mit GetExitCodeThread erhalten. Wenn es doch mehr Parameter sein sollten, gibt es auch eine andere Möglichkeit:Einfach mit VirtualAllocEx ein bisschen Speicher allozieren und dort Code reinschreiben, der dann die Funktion aufruft. Ergebnis-Transfer ganz nach Wahl: Über den Exit-Code oder irgendeine Form von IPC.

3. Die absolute Hacker-Methode, die aber höchstwahrscheinlich nicht funktioniert: Die Exporttabelle des fremden Programms so ändern, dass sie die Funktion exportiert und die Anwendung dann als DLL laden, das muss dann dynamisch und in einem Thread geschehen, weil du sonst nichts tun kannst. Ich habe allerdings keine Ahnung, was die Anwendung dazu sagt, als DLL gestartet zu werden.

WordsBG 25. Okt 2007 18:07

Re: Funktionen externer Anwendungen aufrufen
 
Zitat:

Zitat von Bernhard Geyer
Funktioniert deine Hacker-Lösungen noch wenn der Speicherschutz bei XP/Vista aktiv ist bzw. schlagen da nicht Virenscanner an?

Nun, unter Vista ist das ganze nicht getested, aber im Grunde benutze ich nur FindWindow, GetWindowThreadProcessId, OpenProcess und natürlich Read/WriteProcessMemory. Ganz normale Windows Funktionen, sehe da nicht wirklich eine Verbindung zu Viren oder Hacken. Das Projekt an sich ist nur ein SDK zum Entwickeln von Software die das Game-Manipulieren soll (also Trainer, Spawner für Objekte oder Multiplayer-Mods).

Zitat:

Zitat von SirThornberry
von deiner Anwendung kannst du die andere nicht direkt aufrufen weil die Speicheradresse in deinem Programm nicht gültig ist und wo ganz anders hinzeigt.

Ja, sowas in der Art hatte ich erwartet.

Zitat:

Zitat von Apollonius
CreateRemoteThread

Genau was ich suche, danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

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 by Thomas Breitkreuz