AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionen externer Anwendungen aufrufen

Ein Thema von WordsBG · begonnen am 25. Okt 2007 · letzter Beitrag vom 25. Okt 2007
Antwort Antwort
Benutzerbild von WordsBG
WordsBG

Registriert seit: 17. Sep 2005
63 Beiträge
 
Delphi 7 Professional
 
#1

Funktionen externer Anwendungen aufrufen

  Alt 25. Okt 2007, 14:50
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.

-- WordsBG alias Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Funktionen externer Anwendungen aufrufen

  Alt 25. Okt 2007, 14:56
Funktioniert deine Hacker-Lösungen noch wenn der Speicherschutz bei XP/Vista aktiv ist bzw. schlagen da nicht Virenscanner an?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Funktionen externer Anwendungen aufrufen

  Alt 25. Okt 2007, 14:58
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Funktionen externer Anwendungen aufrufen

  Alt 25. Okt 2007, 15:23
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von WordsBG
WordsBG

Registriert seit: 17. Sep 2005
63 Beiträge
 
Delphi 7 Professional
 
#5

Re: Funktionen externer Anwendungen aufrufen

  Alt 25. Okt 2007, 17:07
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 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 von Apollonius:
CreateRemoteThread
Genau was ich suche, danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz