IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

Utilisation de la bibliothéque detours.h


Sujet :

Développement Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 34
    Points : 25
    Points
    25
    Par défaut Utilisation de la bibliothéque detours.h
    Bonjour tout le monde,

    J'ai téléchargé la bibliothèque detours express 3.0 de Microsoft : http://research.microsoft.com/en-us/projects/detours/
    Je l'ai donc installé et je me suis retrouvé avec un dossier : C:\Program Files\Microsoft Research\Detours Express 3.0
    J'ai donc copié tout les fichiers de ce dossier dans le répertoire de mon projet sous Code::Block
    Et j'ai ensuite voulus compilé mon code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    #include <cstdio>
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "detours.h"
     
    #pragma comment(lib,"ws2_32.lib")
     
    int (WINAPI *pSend)(SOCKET s, const char* buf, int len, int flags) = send;
    int WINAPI MySend(SOCKET s, const char* buf, int len, int flags);
    int (WINAPI *pRecv)(SOCKET s, char* buf, int len, int flags) = recv;
    int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags);
     
    FILE* pSendLogFile;
    FILE* pRecvLogFile;
     
    int WINAPI MySend(SOCKET s, const char* buf, int len, int flags)
    {
        pSendLogFile = fopen("C:\\SendLog.txt", "a+");
        fprintf(pSendLogFile, "%s\n", buf);
        fclose(pSendLogFile);
        return pSend(s, buf, len, flags);
    }
     
    int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
    {
        pRecvLogFile = fopen("C:\\RecvLog.txt", "a+");
        fprintf(pRecvLogFile, "%s\n", buf);
        fclose(pRecvLogFile);
        return pRecv(s, buf, len, flags);
    }
     
    extern "C" __declspec(dllexport) void dummy(void){
        return;
    }
     
    BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved)
    {
        if (DetourIsHelperProcess()) {
            return TRUE;
        }
     
        if (dwReason == DLL_PROCESS_ATTACH) {
            //DetourRestoreAfterWith();
     
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourAttach((PVOID*)(&pSend), (PVOID)MySend);
            DetourTransactionCommit();
     
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourAttach((PVOID*)(&pRecv), (PVOID)MyRecv);
            DetourTransactionCommit();
        }
        else if (dwReason == DLL_PROCESS_DETACH) {
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourAttach((PVOID*)(&pSend), (PVOID)MySend);
            DetourTransactionCommit();
     
            DetourTransactionBegin();
            DetourUpdateThread(GetCurrentThread());
            DetourAttach((PVOID*)(&pRecv), (PVOID)MyRecv);
            DetourTransactionCommit();
        }
        return TRUE;
    }
    Je me retrouve avec les erreurs suivantes :
    ||=== Build: Debug in dllWinsock (compiler: GNU GCC Compiler) ===|
    C:\...\dllWinsock\main.cpp|7|warning: ignoring #pragma comment [-Wunknown-pragmas]|
    C:\...\dllWinsock\main.cpp|8|warning: ignoring #pragma comment [-Wunknown-pragmas]|
    obj\Debug\main.o||In function `Z7DllMainP11HINSTANCE__mPv@12'
    C:\...\dllWinsock\main.cpp|40|undefined reference to `DetourIsHelperProcess@0'|
    C:\...\dllWinsock\main.cpp|47|undefined reference to `DetourTransactionBegin@0'|
    C:\...\dllWinsock\main.cpp|48|undefined reference to `DetourUpdateThread@4'|
    C:\...\dllWinsock\main.cpp|49|undefined reference to `DetourAttach@8'|
    C:\...\dllWinsock\main.cpp|50|undefined reference to `DetourTransactionCommit@0'|
    C:\...\dllWinsock\main.cpp|52|undefined reference to `DetourTransactionBegin@0'|
    C:\...\dllWinsock\main.cpp|53|undefined reference to `DetourUpdateThread@4'|
    C:\...\dllWinsock\main.cpp|54|undefined reference to `DetourAttach@8'|
    C:\...\dllWinsock\main.cpp|55|undefined reference to `DetourTransactionCommit@0'|
    C:\...\dllWinsock\main.cpp|58|undefined reference to `DetourTransactionBegin@0'|
    C:\...\dllWinsock\main.cpp|59|undefined reference to `DetourUpdateThread@4'|
    C:\...\dllWinsock\main.cpp|60|undefined reference to `DetourAttach@8'|
    C:\...\dllWinsock\main.cpp|61|undefined reference to `DetourTransactionCommit@0'|
    C:\...\dllWinsock\main.cpp|63|undefined reference to `DetourTransactionBegin@0'|
    C:\...\dllWinsock\main.cpp|64|undefined reference to `DetourUpdateThread@4'|
    C:\...\dllWinsock\main.cpp|65|undefined reference to `DetourAttach@8'|
    C:\...\dllWinsock\main.cpp|66|undefined reference to `DetourTransactionCommit@0'|
    ||=== Build failed: 17 error(s), 2 warning(s) (0 minute(s), 3 second(s)) ===|
    Je débute avec cette bibliothèque et je n'ai pas trouvé beaucoup de documentation sur internet.

    EDIT : Je viens de me rendre compte que je me suis trompé de section en voyant développement Windows. Si un modérateur pouvait le déplacer dans la section adapté...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Finalement j'ai résolus le problème, pour ceux qui veulent savoir.
    Il fallait compiler la bibliothèque avec la commande nmake de visual studio.
    Cela génère un fichier detours.lib qu'il faut utiliser dans son projet.
    En revanche je ne suis pas parvenus a le compiler avec mingw.
    J'ai un autre soucis suite a ça. Mais je vais fermer ce sujet et le poster dans une section plus adaptée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ITK] Utilisation de la bibliothèque itk
    Par larimoise dans le forum Bibliothèques
    Réponses: 25
    Dernier message: 08/09/2010, 10h33
  2. utilisation de la bibliothèque ODE
    Par franco01 dans le forum ODE
    Réponses: 5
    Dernier message: 31/03/2006, 17h04
  3. Réponses: 8
    Dernier message: 07/12/2005, 11h18
  4. Utilisation de la bibliothèque zlib
    Par OutOfRange dans le forum Langage
    Réponses: 5
    Dernier message: 11/11/2005, 16h15
  5. [VB] Utilisation de la Bibliothèque Acrobat
    Par ShutleX20 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/10/2005, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo