Pregunta

Tengo el siguiente código:

       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);

        }

Cuando ejecuto el proyecto, recibo el siguiente error:

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

¿Alguna sugerencia sobre qué puede causar ese error? Agregué una referencia a todo el DLL necesario ...

¿Fue útil?

Solución

Más probable: Intente ejecutar VS 2010 como administrador. De hecho, hice mi atajo de menú de inicio de VS "Ejecutar como administrador", así que no tengo que recordarlo.

Alternativamente: La documentación de Easyhook para el método de inyección menciona que: "Si inyecta una biblioteca en cualquier proceso de destino, tenga en cuenta que su directorio de trabajo se cambiará. EasyHook agregará automáticamente el directorio de la aplicación de inyección como el primer directorio de la variable de entorno de ruta del objetivo. Así que asegúrese de que todas las dependencias requeridas sean Ya sea ubicado dentro del directorio de la aplicación de inyección, un directorio del sistema o cualquier directorio de manera predeterminada en la variable de ruta "

Último recurso desesperado: Algunos errores son al menos semi-benign, por lo que puede ir a la depuración del menú VS-> excepciones ... y desmarcar el error ofensivo, excepto que no se romperá allí. He tenido uno o dos casos en el que el código realmente funcionó una vez que le dije a VS que no rompiera ese error.

Por cierto: ¿Qué binarios ha incluido, ¿cuál es la arquitectura y el sistema operativo de su sistema?

Otros consejos

No puedo darte una solución exacta, pero ¿podrías tener estos problemas ...

  • ¿Está agregando la DLL en su carpeta de proyecto/bin? En caso afirmativo, copie esa carpeta a System32 y agregue nuevamente como referencia a esa carpeta

  • O intente esto, abra el símbolo del sistema Visual Studio y ejecute este comando regsvr32 yourdlllocationLuego agrégalo como referir ahora.

Espero que resuelva el problema y asegúrese de que su tipo de sistema y tipo DLL, ambos deberían ser para aplicaciones Win32.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top