AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Daten verbindung von einem Programm abhöhren?
Thema durchsuchen
Ansicht
Themen-Optionen

Daten verbindung von einem Programm abhöhren?

Ein Thema von Kedariodakon · begonnen am 1. Jan 2005 · letzter Beitrag vom 7. Jan 2005
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#31

Re: Daten verbindung von einem Programm abhöhren?

  Alt 6. Jan 2005, 11:28
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#32

Re: Daten verbindung von einem Programm abhöhren?

  Alt 6. Jan 2005, 11:46
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.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#33

Re: Daten verbindung von einem Programm abhöhren?

  Alt 6. Jan 2005, 13:29
Dann müst ich ja erstmal wissen, welche dlls er benutzt

Wie bekomm ich das am einfachsten raus?

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#34

Re: Daten verbindung von einem Programm abhöhren?

  Alt 7. Jan 2005, 08:44
Ok habe mnich gestern Abend mal mit einem Api Hook beschäftigt...

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?

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?

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#35

Re: Daten verbindung von einem Programm abhöhren?

  Alt 7. Jan 2005, 13:30
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
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 [/edit]
Angehängte Dateien
Dateityp: zip functionhooking_197.zip (239,4 KB, 35x aufgerufen)
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#36

Re: Daten verbindung von einem Programm abhöhren?

  Alt 7. Jan 2005, 13:43
Ich danke dir, werde am WE reinschaun, falls ich Fragen hab, meld ich mich wieder

Bye
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 12:30 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