function callbackSendTo(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr; tolen: Integer): Integer; stdcall;
So das ist meine Funktion. Beim Aufruf dieser Callbackfunktion wandel ich den Inhalt von Buf erstmal in Hexadezimal um und schau ob es sich bei diesem um ein bestimmtes Paket handelt.
Wenn es sich um eben dieses Paket handelt möchte ich das vorletzte Byte in ein 'A' ändern. Das Problem ist nicht das ändern des 'A' sondern das anschließende Aufrufen mit den richtigen Parametern.
Delphi-Quellcode:
function callbackSendTo(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr; tolen: Integer): Integer; stdcall;
var
packet: TStringDynArray;
buffer: Pointer;
begin
packet := getPacketAsHex(Buf, Len);
if Length(Packet) > 0 then
begin
Buffer := PChar(HexToStr(implode('', packet)));
Result := orgiSendTo(s, Buffer, Len, Flags, addrto, tolen);
end else
Result := orgiSendTo(s, Buf, Len, Flags, addrto, tolen);
end;
Also kurze Erläuterung. getPacketAsHex wandelt das Packet in einen Hexadezimalstring um. Wenn die Länge von Packet > 0 ist, dann handelt es sich um das spezifische Paket. Packet enthält dann alle modifizierten Bytes. Nun habe ich jedoch kein Plan wie ich das letzlich erfolgreich sende. So wie ich es aktuell mache funktioniert es nicht.