AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WSARecv Hook - Pakete loggen und ändern
Thema durchsuchen
Ansicht
Themen-Optionen

WSARecv Hook - Pakete loggen und ändern

Ein Thema von Zacherl · begonnen am 20. Nov 2007 · letzter Beitrag vom 20. Nov 2007
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

WSARecv Hook - Pakete loggen und ändern

  Alt 20. Nov 2007, 17:28
Hey,

ich habe einen WSARecv für ein bestimmtes Programm installiert und möchte nun zunächst die Pakete loggen. Funktioniert alles wunderbar. Ich kenne das Protokoll der Anwendung: Ein neuer Befehl fängt mit dem Zeichen * an und die 2 Bytes danach beinhalten die Länge. Jetzt sind die Buffer, die ich über WSARecv empfange natürlich manchmal nicht komplett, oder aber es sind zu viele Daten enthalten.
Parsen kann ich das ganze auch, aber nun 2 Fragen:

* Kommen die Pakete sicher in der richtigen Reihenfolge an?
* Kann ich in diesem Falle einfach die Originalfunktion so oft aufrufen, bis mindestens ein Befehl vorhanden ist, den Rest puffern und beim nächsten Aufruf übergeben? Konkret geht es mir darum, dass ich nicht weiß, wie sich die Puffergrößen verhalten, die der Funktion WSARecv übergeben werden.

Gruß
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: WSARecv Hook - Pakete loggen und ändern

  Alt 20. Nov 2007, 18:05
Zitat von Zacherl:
* Kommen die Pakete sicher in der richtigen Reihenfolge an?
Ja, der TCP Stack sorgt für die richtige Reihenfolge.
Zitat von Zacherl:
* Kann ich in diesem Falle einfach die Originalfunktion so oft aufrufen, bis mindestens ein Befehl vorhanden ist, den Rest puffern und beim nächsten Aufruf übergeben? Konkret geht es mir darum, dass ich nicht weiß, wie sich die Puffergrößen verhalten, die der Funktion WSARecv übergeben werden.
Du kannst ja mit mehreren Puffern arbeiten. Ich würde aber nur einen Puffer nützen (dwBufferCount=1).
In lpNumberOfBytesRecvd erhältst du die Anzahl der Bytes.
Wenn diese Anzahl < deiner Puffergrösse ist, dann bist du vorerst fertig.
Falls die Anzahl gleich deiner Puffergrösse ist, solltest du die Daten wegspeichern und gleich nochmal WSARecv aufrufen.
Du könntest aber auch die Funktion recv() aufrufen; die ist nicht so komplex und einfacher aufzurufen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: WSARecv Hook - Pakete loggen und ändern

  Alt 20. Nov 2007, 18:55
Danke für deine Antwort Recv kann ich leider nicht hooken bei diesem Programm. Wird irgendwie nie aufgerufen =/ Noch eine Frage zu den Buffern. flpBuffers enthält ja die BufferRecords, die je einen PAnsiChar und dessen Länge beinhalten. Es ist möglich diese Buffer einfach zu vergrößern? Oder würde das Probleme im Programm geben, welches die Buffer übergeben hat?
  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 11:40 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