AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Hilfe bei legalem Packet Sniffer benötigt

Hilfe bei legalem Packet Sniffer benötigt

Ein Thema von Spielie96 · begonnen am 12. Dez 2019 · letzter Beitrag vom 12. Dez 2019
Antwort Antwort
Spielie96
(Gast)

n/a Beiträge
 
#1

Hilfe bei legalem Packet Sniffer benötigt

  Alt 12. Dez 2019, 16:25
Hallo,

ich habe ein kleines Problem und ich hoffe sehr, dass ihr mir dabei helfen könnt. Ich habe vor einigen Wochen einen Auftrag angenommen, für den meine Firma einige sicherheitstechnische Aspekte eines älteren MMORPG prüfen muss. Wir sind hiermit schon fast durch und es fehlen nur noch ein paar Kleinigkeiten. Wir benötigen für die letzte Testreihe noch einen Packet Sniffer für eingehende Pakete. Leider ist unser hausinterner Experte auf dem Gebiet seit Montag für längere Zeit krankgeschrieben und es bleibt somit an mir hängen.
Ich bin also hergegangen und habe den von ihm entwickelten Packet Editor (für ausgehende Pakete) beim Pointer/Hook angepasst. Leider funktioniert es nicht wirklich... das Script gibt zwar sämtliche Rückmeldungen aus, allerdings crasht der Client des Spiels bei der Übermittlung des abgefangenen Paketes an die ursprüngliche Funktion. Das integrierte AntiCheat-System wurde bereits umgangen und greift nicht. X32dbg gibt vor dem Crash folgende Meldung aus: "Erste Ausnahme [First chance exception] bei 701FB224 (C00000FD, EXCEPTION_STACK_OVERFLOW)!".
Ich bin in diesem Bereich überhaupt kein Experte, allerdings vermute ich, dass der Fehler irgendwie mit dem Move der Funktion im Memory zusammenhängt. Ich kann hier leider keine detaillierten Informationen zum Script preisgeben, da diese auch in den falschen Händen landen könnten.
Folgendes kann ich preisgeben:

Code:
procedure PlaceHook(ReplacementAddress: Pointer);
begin
   NearJmpSpliceRec.ReplAddr := ReplacementAddress;
   InitNearJmpSpliceRec(Pointer(NativeUInt(GetModuleHandleA('XXXXX.dll')) + $XXXXXX), @Proxy);
end;

procedure Proxy(Message: PNetworkMessage; Login: Boolean); stdcall;
begin
   try
   begin
      SpliceNearJmp(NearJmpSpliceRec.FuncAddr, NearJmpSpliceRec.OldData);
      TSendToServerNew(NearJmpSpliceRec.ReplAddr)(Message, Login);
      // Call original func
      TSendToServerNew(NearJmpSpliceRec.FuncAddr)(Message, Login); //<-- Hier steigt das Script aus ohne in die Exception zu springen.
      SpliceNearJmp(NearJmpSpliceRec.FuncAddr, NearJmpSpliceRec.NewData);
   end;
   except
      on E : Exception do
      begin
         MessageBox(0, PChar(E.ClassName+' error raised, with message : '+E.Message), '', MB_TOPMOST);
      end;
   end;
end;

procedure SpliceNearJmp(FuncAddr: Pointer; NewData: TNearJmpSpliceRec);
var
   OldProtect: DWORD;
begin
   VirtualProtect(FuncAddr, SizeOf(TNearJmpSpliceRec), PAGE_EXECUTE_READWRITE, OldProtect);
   try
      Move(NewData, FuncAddr^, SizeOf(TNearJmpSpliceRec));
   finally
      VirtualProtect(FuncAddr, SizeOf(TNearJmpSpliceRec), OldProtect, OldProtect);
      FlushInstructionCache(GetCurrentProcess, FuncAddr, SizeOf(TNearJmpSpliceRec));
   end;
end;
Gerne zahle ich auch für einen Fachkundigen, der sich dem Problem annehmen möchte und einen vollständigen Einblick in das Script erhält. Das Script muss schnellstmöglich - spätestens bis morgen gegen 16:30 - fertiggestellt werden, damit wir unsere Fristen einhalten können.

Wir wurden mit der Prüfung des Online-Spiels durch den Publisher beauftragt. Es steht somit keine Computersabotage im Raum und die Entwicklung und das Testen des Online-Spiels durch uns ist somit legal.

Vielen Dank im Voraus!!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.772 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hilfe bei legalem Packet Sniffer benötigt

  Alt 12. Dez 2019, 22:32
Die Exceptions, bedeutet die, dass der normale Stack übergelaufen ist? Falls ja, gibt es da zuviele Recursionen oder geht es um einen Exception-Stack?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:21 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