Announcement

Collapse
No announcement yet.

Winsock Hook?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Winsock Hook?

    Hallo,

    gibt es eigentlich einen Winsock-Hook oder sowas? Ich möchte ein Tool schreiben, die alle Aufrufe eines Programms (fest definiert) an die Winsock abfängt und via TCP an einen anderen PC weiterleitet. Irgendwie muss das möglich sein, nur wie? Gibt es ev. eine Callback-Funktion der Winsock die mir Bescheid sagt, dass eine Anwendung gerade versucht, rauszukommen? Ich möchte "nicht-Proxy-fähige" Anwendungen Proxy-fähig machen.

    Paul

  • #2
    Hallo,<p>
    im Forum von EliCZ wurde diese Frage schon oft gestellt. Jedoch habe ich beim Überfliegen nie eine konstruktive Antwort gelesen.<br>
    Vielleicht kannst du sie ihnen ja entlocken?<p>
    Gruß,<br>
    Marku

    Comment


    • #3
      Hallo Markus,

      sorry, aber wer bzw. was ist "EliCZ"?

      Pau

      Comment


      • #4
        Ja. Im Gunde benutzt man die "Hook" Funktionalität der Gerätetreiber. Solche SYS/VXD Dateien benutzen intern Codes und Einsprungtabellen für ihre Funktionen. Das von MS bereitgestellte Treiber-OS unterstützt schon das "Hooken" per se. Man schreibt also einen Treiber der sich in die Treiberaufrufe eines anderen "reinlinkt".<br>
        Es gibt aber auch andere, "Brute Force", Wege. Such mal nach "packet32.dll, zpacket.vxd, Sang-Eun Han, François Piette", dann findest Du schon eine Delphi Lösung. Viele versuchen aber auch einfach die system-DLL's durch ihre Eigenen zu ersetzen die eigentlich nur die Funktionsaufrufe an die originale Funktion durchreichen. Dies schlägt aber bei richtiger Konfiguration des OS fehl, da das OS diese Systembibliothek aus dem DLL Cache reinstalliert.<br>
        Man kann dieses "statische" Export-Hooken auch dynamisch erledigen. D.h. erst nachdem eine DLL geladen wurde werden ihre Einsprungspunkte gepatcht. usw. usw.<br>
        Wie gesagt der erste Weg über Treiber ist der "offiziell" richtge und saubere Weg, und alle anderen sind schon fast "kriminell" )

        Gruß Hage

        Comment


        • #5
          Ähem ... danke für Deinen Eintrag, aber nun komme ich nicht hinterher. Wenn ich mir z.B. den Wingate-Client anschaue: Man startet eine Application aus dem Client heraus (aus der Liste), der Client startet die Anwendung und fängt alles ab, was für die Winsock bestimmt ist. Ich denke nicht, dass die eine eigens modifizierte Winsock reinkopieren, das wäre eher "Pfusch".

          Irgendwie müssen die das doch machen, die installieren keinen Treiber, soweit ich weiss. Bleibt doch eigentlich nur noch ein Hook, oder?

          Pau

          Comment


          • #6
            WinGate ist ein Proxy Server und stellt einen Proxy Dienst zur Verfügung. Das hat nichts mit Hooken zu tun. Stattdessen stellt Wingate eigene Ports zur Verfügung und mappt alle Transaktionen auf diese Ports zu den eigentlichen Internet-Ports. Eine Anwendung die also direkt auf die Internet Ports zugreift wird von WinGate garnicht bemerkt. Nur Anwendungen die auf die Ports von WinGate zugreifen werden von WinGate behandelt. Dies ist das normale Verhalten eines Proxy Servers.

            Gruß Hage

            Comment


            • #7
              Ne, es gibt einen Wingate-Client. Den installiert man auf dem PC (1 EXE), trägt die Dateinamen in eine Liste ein, die nicht Proxy-fähig sind. Nun kann man einen Eintrag aus der Liste wählen und die Anwendung aus den Client heraus starten. Der Client fängt dann irgendwie (das ist interessant!) alle Anfragen dieser Anwendung an die Winsock ab und sendet sie an den Wingate-Proxy. Der verhält sich dann wie ein Proxy. Genau diesen weg meine ich: Wie funktioniert so etwas? Client und Server sind 2 verschiedene PC's.

              Pau

              Comment


              • #8
                Hi Paul,<p>
                <i>> sorry, aber wer bzw. was ist "EliCZ"?</i><p>
                EliCZ ist der tschechische NicoDE <br>
                Ein API- und NT-Crack sondersgleichen.<br>
                Seine Seite ist zu finden unter: http://www.anticracking.sk/EliCZ/<p>
                Viel Spaß damit,<br>
                Marku

                Comment


                • #9
                  Danke für den Link. Oh man, da steige ich garnicht durch. Man scheint damit ja ne Menge machen zu können, aber ich weiss nicht, welches Paket ich laden soll bzw. wie ich das überhaupt anwenden soll. Gibt es keinen "legalen" Weg?

                  Pau

                  Comment


                  • #10
                    Hi Paul,<p>
                    da hast du allerdings recht.<br>
                    Ich selbst interessiere mich sehr dafür, habe aber bisher nur wenig "Lernerfolg". Das Problem ist wohl, dass man sehr viel Insiderwissen dafür braucht. Bücher handeln dieses Thema jedoch sehr schnell ab, Tutorials sind auch rar. Hinzu kommt, dass die Profis dieses Know-How nicht gerne weitergeben, weil man viel Unfug damit anstellen kann. Außerdem habe ich das Gefühl, dass Delphi für so eine Art Programmierung nicht unbedingt geeignet ist.<br>
                    Wenn ich wieder mal über etwas Interessantes stolpere dann sag ich dir Bescheid. Solange musst aber wohl Hagen bzw. die anderen Insider bitten, dass sie dir(/uns) helfen .<p>
                    Gruß,<br>
                    Marku

                    Comment


                    • #11
                      Naja, soviel Insider bin ich da auch nicht. Das Problem ist immer das ich versuche ein konkretes Statement nur dann abzugeben wenn ich mit dem Thema schon selber praktische Erfahrungen gesammelt habe.<br>
                      Nun was weis ich "ohne Garantie"<br>
                      1.) es gibt im WinSock/TAPI eine Funktion mit der man eine Callback installieren kann die vom System bei Connetions usw. aufgerufen wird<br>
                      2.) es gibt die besagten Hooks in den Treibern (VXD/SYS)<br>
                      3.) er gibt die Möglichkeit den Start von Modulen per Shell Extensionen abzufangen und dann per DLL's oder Injects die Importe des geladenen Modules in WinSocks DLL's zu patchen. In dem Moment würden alle Aufrufe der WinSock Funktionen dieses Modules erstmal zum Hook laufen. Diese würde ohne VXD/SYS gehen.<br>
                      4.) auch wenn eine Anwendung sichtbar keinen Treiber installiert so ist dies doch möglich. Ich selber nutze einen Port Treiber der in die EXE als Resource eingebunden ist. Erst wenn er benötigt wird wird er entpackt, dynamisch beim SCM registriert und geladen, und danach die Datei sofort wieder gelöscht. Dies ist möglich das Treiber durch das System einmal vollständig geladen werden, im Speicher an fester Addresse liegen.<br>
                      5.) es gibt für Delphi z.B. von Madshi eine madCodeHook Library. Diese ermöglicht Systemweites hooken von System/API Funktionen. Durch patchen von Kernel.LoadLibrary() bekommt man das Laden eines beliebigen Modules mit und kann dann z.B. WinSock's DLL's patchen.<br>
                      6.) der offizell korrekte Weg ist aber über die Installation eines Proxy-Ports dieser mappt zu den tatsächlichen Ports und alle Anwendungen müssen den Proy nutzen.<br>

                      Gruß Hage

                      Comment


                      • #12
                        @Hagen: Kennst du den Source zu madCodeHook? Wenn ja, ist dieser pädagogisch wertvoll um sich in dieses Metier einzuarbeiten?<br>
                        Ich leide nämlich sehr darunter, dass ich mein Subclassingprogramm (nicht Winsock) nicht zum Laufen bekomme.<p>
                        Gruß,<br>
                        Marku

                        Comment


                        • #13
                          Die meinsten Komponenten von Madshi sind Shareware/Kommerzware.<br>
                          Es gibt zwar Sourcen, meistens in C, diese sind aber nicht so konzentriert wie in Madshis Kompos. Im Grunde ist die Technik recht simpel von der Idee her und schon seit den Anfängen der Rechner bekannt und benutzt. ABER, es kommt auf das Drumherum an und das solche defizile Techniken gut erprobt, sauber, stabil und auf einer breiten Palette von Systemen getestet sind.<br>

                          SubClassing hat mit solchen CodeHooks nichts zu tun, oder umgekehrt gesehen wären solche CodeHooks die Kanonen mit denen man auf die Spatzen "SubClassing" zielt. SubClassing als solches ist vom Windows und in der VCL nochmals sehr gut unterstützt.<br>

                          In der VCL z.b. wird entweder einer Messages per Messagemethode überschrieben oder aber die Methode .WndProc überschrieben oder aber die Property .WindowProc mit einer "Hook" fenstermethode belegt.<br>

                          Gruß Hage

                          Comment


                          • #14
                            Sorry, aber wenn ich nicht als Admin angemeldet bin und ich als User nicht explizit das Recht zum Treiber-Laden habe, dann könnte ich ja, wie im Beispiel, den Client nicht nutzen. Kann ich aber (eben getestet), und ich bin nicht als Admin drin und habe auch nicht das Recht auf Treiber-Laden. Ich nutze selbst einen Port-Treiber, daher kenne ich das Rechte-Problem

                            Comment


                            • #15
                              Es gibt einen kleinen aber feinen Unterschied, beim Laden eines Treibers, nämlich der Unterschied zwischen Laden=Installieren und Laden=Aktivieren. Sollte ein Treiber schon mal mit Admin Rechten geladen=installiert worden sein, so ist dieser meistens beim nächsten Start unter anderem Konto schon installiert aber nicht aktiv. In diesem Moment hat der Admin sozusagen die Nutzung dieses Treiber erlaubt, das System ihn noch nicht aktiviert und der Normalbenutzer fordert das System nur auf ihn zu Starten.<br>

                              Gruß Hage

                              Comment

                              Working...
                              X