Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Daten verbindung von einem Programm abhöhren? (https://www.delphipraxis.net/37161-daten-verbindung-von-einem-programm-abhoehren.html)

c113plpbr 6. Jan 2005 11:28

Re: Daten verbindung von einem Programm abhöhren?
 
API-Hooking ist eigentlich vom Prinzip her einfach zu verstehen:
Du ersetzt eine Funktion in einem (meist fremden) Prozess, durch eine andere, eigene (die in einer dll steht, welche "gezwungenermaßen" vom fremden prozess geladen wird ("DLL-Injection")). Diese eigene Funktion kann dann ggf. die Parameter verändern, die original-funktion aufrufen, und den return-value verändern (man kann natürlich auch irgendetwas anderes machen ...).

Wie das im detail funktioniert, kannst du dir anhand des Source-codes der AfxCodeHook API-Hook-Library von http://www.iamaphex.net/ zu gemüte führen. Allerdings ist dieser doch noch relativ schwer zu duchblicken ... ^^. Ich persönlich finde diese Hook-Library aber nicht so toll, da sie ettliche funktionen, die mir in der MadCodeHook-Lib zur verfügung stehen nicht bietet (z.B. IPC).

Ich beschäftige mich mit API-Hooking schon seit längerem, also, wenn ich dir irgendwie weiterhelfen soll, frag mich, und ich werde es versuchen ;) .

ciao, Philipp

richard_boderich 6. Jan 2005 11:46

Re: Daten verbindung von einem Programm abhöhren?
 
hi,

1. @ supermukl

ich denk er bezieht sich auf firewalls, weil dort im soganannten lernprozess, auch
alle programme erkannt werden, die eine verbindung zum internet ueber einen speziellen port herstellen wollen.
meines wissens, setzen alle firewalls dafür spezielle NDIS-Treiber ein. es gibt glaube ich aber auch eine winapi funktion, die so etwas
ähnliches erlaubt. aber ich glaube erst ab Win XP. dort sollst du angeblich abfragen koennen, welche Anwendung ein entsprechendes
tcp ip Paket gesendet hatt.

Kedariodakon 6. Jan 2005 13:29

Re: Daten verbindung von einem Programm abhöhren?
 
Dann müst ich ja erstmal wissen, welche dlls er benutzt :gruebel:

Wie bekomm ich das am einfachsten raus?

Bye

Kedariodakon 7. Jan 2005 08:44

Re: Daten verbindung von einem Programm abhöhren?
 
Ok habe mnich gestern Abend mal mit einem Api Hook beschäftigt... :stupid:

So wenn ich nun die Verbindung abhören will, reicht es, wenn ich im meinem Programm auf die Funktionen der wsock32.dll hooke und dann von meinem Programm aus das abzuhörende starte?
oder muß ich ne dll schreiben, zum hooken? :wall:

Für was neue dlls gut sind, hab ich noch net so ganz verstanden, aber wie hook ich nun am besten auf der Socket verbindung? Wär doch so ein API Hook nicht war? :gruebel:

Bye

c113plpbr 7. Jan 2005 13:30

Re: Daten verbindung von einem Programm abhöhren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sicher, fürs API-Hooking in fremden anwendungen brauchst du im normalfall eine DLL. Ich hab zwar schon leute gesehen, die das mit einer exe gemacht haben, aber ich hab gehört, dass dies nicht zu empfehlen sei.
Diese DLL musst du dann in dein Zielprogramm "injezieren", sprich, du musst das programm dazu bringen, die dll zu laden. Das geht bei MadCodeHook per InjectLibrary.

Nun, sobald die DLL dann im Speicher ist, wird die DLL-Main ausgeführt, sprich das, was zwischen "begin" und "end." steht. Dort musst du nun die Funktionen hooken. Das tust du ganz einfach per
Delphi-Quellcode:
HookAPI('dllname', 'funktionsname', @pointer_auf_callbackfunc, @pointer_auf_nextfunc);
Dieser aufruf ersetzt die funktion 'funktionsname' die von der 'dllname'-DLL exportiert wird durch @pointer_auf_callbackfunc, speichert aber die originalfunktion unter @pointer_auf_nextfunc .
D.h. du brauchst eine funktionen, die exakt die gleichen parameter aufweist, wie die originale (welche das sind, kannst du entweder in einer headerdatei nachschauen, oder in der PSDK), und eine variable, in der du den pointer der originalfunktion (aufrufbar) abspeicherst.
Dann musst du nurnoch in der callback funktion, die immer anstatt der originalfunktion aufgerufen wird, mitloggen, und die originalfunktion aufrufen, damit das was passieren sollte, dann auch funktioniert ... ^^.

Ich hänge mal 2 beispiele (die waren eigentlich für mein Hooking-Tut, das ich aber leider bis jetzt nicht fertiggekriegt hab :| ) an, ich hoffe die erklären sich vom quellcode her und der obigen beschreibung von allein ... das eine beispiel zeigt, wie man funktionen in einer eigenen anwendungen hooken kann, anhand eines MessageBoxA-Hooks. Das andere beispiel ist eine DLL, die man in ein anderes programm "injezieren" muss (injector liegt bei; bitte per PID in einzelne programme injezieren (PID im taskmanager nachschaun), und das uninjezieren (nach dem testen) nicht vergessen!). Diese DLL ersetzt den Text jeder MessageBoxA (des programms in welches die dll injeziert wurde) durch 'geänderter text'.

Und ich glaube, du musst nicht die wsock32.dll hooken, sondern die ws2_32.dll , was da genau der unterschied ist, weis ich nicht, aber appsniff macht das auch so. Achja, für dein vorhaben, kann dir der quellcode von AppSniff ziemlich weiter helfen, denn dieses Programm tut ja auch nichts anderes ... ^^

ok, bei fragen, fragen! ;)
ciao, Philipp

[edit]oops, anhang vergessen :oops: [/edit]

Kedariodakon 7. Jan 2005 13:43

Re: Daten verbindung von einem Programm abhöhren?
 
Ich danke dir, werde am WE reinschaun, falls ich Fragen hab, meld ich mich wieder :zwinker:

Bye


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 Uhr.
Seite 4 von 4   « Erste     234   

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