Question

J'ai le code suivant:

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

        }

Quand je lance le projet, je reçois l'erreur suivante:

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

Toute suggestion sur ce qui peut provoquer cette erreur? J'ai ajouté une référence à tous les dll nécessaires ...

Était-ce utile?

La solution

Très probablement : Essayez d'exécuter VS 2010 en tant qu'administrateur. En fait, je fait mon VS « Exécuter en tant qu'administrateur » raccourci du menu Démarrer, donc je n'ai pas de se rappeler.

Vous pouvez également : La documentation EasyHook pour la méthode Injecter mentionne que:. "Si vous injectez une bibliothèque dans un processus cible s'il vous plaît garder à l'esprit que votre répertoire de travail sera mis EasyHook sera automatiquement ajoutez le répertoire de l'application injection comme le premier répertoire de la variable d'environnement PATH de la cible. donc, assurez-vous que toutes les dépendances nécessaires sont soit situés dans le répertoire de l'application d'injection, un répertoire système ou un répertoire défaillant peut contenu dans la variable PATH "

Desperate Last Resort : quelques erreurs sont au moins semi-bénigne, de sorte que vous pouvez aller dans le menu Debug VS -> Exceptions ... et décochez l'erreur incriminée, sauf si il ne cassera pas Là. J'ai eu un cas ou deux où le code fait bien couru une fois que je l'ai dit de ne pas briser VS sur cette erreur.

BTW: quels binaires avez-vous inclus, ce qui est l'architecture de votre système et OS

Autres conseils

Je ne peux pas vous donner la solution exacte, mais pourriez-vous avoir ces questions ...

  • Ajoutez-vous le dll dans votre projet / bin dossier? Si oui, copier ce dossier à System32 et ajouter à nouveau et comme référence à ce dossier

  • Ou essayez, ouvrez commande Visual Studio rapide et exécuter cette commande regsvr32 yourDLLLocation puis l'ajouter comme refernce maintenant.

L'espoir qu'il va résoudre le problème, et être sûr que votre type de système et le type dll, les deux devraient être pour win32 applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top