Frage

Ich habe den folgenden Code:

       try
        {
            Debug.WriteLine("Hook Start");
            RecvHook = LocalHook.Create(
                LocalHook.GetProcAddress("ws2_32.dll", "recv"),
                new Drecv(recv_Hooked),
                this);


            RecvHook.ThreadACL.SetExclusiveACL(new Int32[] { 0 });
        }
        catch (Exception ExtInfo)
        {
            Debug.WriteLine("Error creating Hook");
        }
...
        [DllImport("ws2_32.dll")]
        static extern int recv(
                    IntPtr socketHandle,
                    IntPtr buf,
                    int count,
                    int socketFlags
            );


        [UnmanagedFunctionPointer(CallingConvention.StdCall,
            CharSet = CharSet.Unicode,
            SetLastError = true)]


        delegate int Drecv(
                    IntPtr socketHandle,
                    IntPtr buf,
                    int count,
                    int socketFlags
            );


        static int recv_Hooked(
                    IntPtr socketHandle,
                    IntPtr buf,
                    int count,
                    int socketFlags)
        {
            byte[] test = new byte[count];
            Marshal.Copy(buf, test, 0, count);
            IntPtr ptr = IntPtr.Zero;

            ptr = Marshal.AllocHGlobal(count);
            Marshal.Copy(test, 0, ptr, count);


            string s = System.Text.UnicodeEncoding.Unicode.GetString(test);
            Debug.WriteLine(s);
            System.IO.StreamWriter file = new System.IO.StreamWriter("log.txt");
            file.WriteLine(s);


            file.Close();
            return recv(socketHandle, buf, count, socketFlags);

        }

Wenn ich das Projekt ausführe, erhalte ich den folgenden Fehler:

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Windows.Forms.dll
Inizio Hook
A first chance exception of type 'System.DllNotFoundException' occurred in EasyHook.dll
A first chance exception of type 'System.DllNotFoundException' occurred in EasyHook.dll
Error creating Hook

Irgendwelche Vorschläge zu Was kann diesen Fehler verursachen? Ich habe einen Verweis auf alle benötigten DLL hinzugefügt ...

War es hilfreich?

Lösung

Höchstwahrscheinlich: Versuchen Sie, vs 2010 als Administrator auszuführen. Ich habe meine VS -Startmenü "Ausführen" als Administrator "gemacht, damit ich mich nicht erinnern muss.

Alternative: In der Easyhook -Dokumentation für die Inject -Methode wird erwähnt, dass: "Wenn Sie eine Bibliothek in einen Zielprozess injizieren Entweder im Verzeichnis der injizierenden Anwendung, ein Systemverzeichnis oder ein Verzeichnis, das in der Pfadvariablen standardmäßig enthalten ist. "

Verzweifeltes letzte Mittel: Einige Fehler sind mindestens halbgebunden, sodass Sie das VS-Menü-Debug-> Ausnahmen ... und den beleidigenden Fehler deaktivieren können, sofern dies nicht dort brechen. Ich habe ein oder zwei Fälle gehabt, in denen der Code tatsächlich gut gelaufen ist, als ich VS nicht mit diesem Fehler aufbrechen soll.

BTW: Welche Binärdateien haben Sie beigefügt, wie lautet Ihre Systemarchitektur und Ihr Betriebssystem?

Andere Tipps

Ich kann Ihnen keine genaue Lösung geben, aber könnten Sie diese Probleme haben ...

  • Fügen Sie die DLL in Ihrem Projekt/Bin -Ordner hinzu? Wenn ja, kopieren Sie diesen Ordner in System32 und fügen Sie wieder als Verweis auf diesen Ordner hinzu

  • Oder öffnen Sie dies, öffnen Sie die Eingabeaufforderung der Visual Studio und führen Sie diesen Befehl aus Regsvr32 yourDllLlocationFügen Sie es dann als nun als Refernce hinzu.

Ich hoffe, es wird das Problem lösen und sicher sein, dass Ihr Systemtyp und Ihr DLL -Typ für Win32 -Apps sein sollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top