Domanda

Ho il seguente codice:

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

        }

Quando eseguo il progetto, ottengo il seguente errore:

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

Qualsiasi suggerimento su ciò che può causare tale errore? Ho aggiunto un riferimento a tutte le dll necessario ...

È stato utile?

Soluzione

Molto probabilmente : Provare a eseguire VS 2010 come amministratore. Io in realtà fatto il mio VS iniziare menu di scelta rapida "Esegui come amministratore" in modo da non devo ricordare.

In alternativa : La documentazione EasyHook per il metodo Inject menzioni che:. "Se si inietta una libreria in qualsiasi processo di destinazione si prega di tenere a mente che la vostra directory di lavoro viene commutato EasyHook verrà automaticamente aggiungere la directory dell'applicazione iniettare come primo elenco di variabile d'ambiente PATH del bersaglio. Quindi, assicurarsi che tutte le dipendenze richieste o sono situati all'interno directory dell'applicazione iniezione, una directory di sistema o di qualsiasi directory defaultly contenuto nella variabile PATH "

Desperate Last Resort : alcuni errori sono almeno semi-benigna, in modo da poter andare al menu VS Debug -> Eccezioni ... e deselezionare l'errore di offendere, tranne in modo che non si romperà Là. Ho avuto un caso o due in cui il codice in realtà ha funzionato bene una volta ho detto a VS non rompere su tale errore.

A proposito:? Quali binari È stato incluso, che cosa è l'architettura del sistema e OS

Altri suggerimenti

non posso dare soluzione esatta, ma potreste avere questi problemi ...

  • Stai aggiungendo la dll nel progetto / cartella bin? Se sì, copiare la cartella di System32 ed e ancora aggiungere come riferimento a quella cartella

  • Oppure provate questo, il comando Aprire Visual Studio pronta ed eseguire il comando regsvr32 yourDLLLocation poi aggiungerlo come riferimento e la società.

La speranza si risolve il problema, e sicuro che il vostro tipo di sistema e dll tipo, entrambi dovrebbero essere per Win32 apps.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top