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

C++ Discussion :

DLL Entry Point (GCC)


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut DLL Entry Point (GCC)
    Bonjour,

    Je poste car j'ai un petit(mais capitale) problème : Je souhaite réaliser une DLL de hook avec gcc et donc si j'ai bien comprit le principe expliquer dans ce tutoriel http://tcharles.developpez.com/simul/ le system charge une instance de la DLL par programme (ou du moins une pour le system et une pour le programme qui l'utilise... en fait justement je comptais faire des teste pour en savoir plus) Il me faut donc mémoriser le handle de la dll charger (comme indiquer dans le tuto enfaite) et pour cela il faut le récupérer lors du chargement de la dll via le point d'entrée(<ModuleEntryPoint> je crois lorsqu'on décompile la dll?). Le problème c'est que pour ma dll le point d'entrée n'est pas appeler(pour en être sur je tente d'afficher un MessageBox) >.<
    J'ai bien chercher a comprendre si cela venais d'un problème de décoration (vu que je travaille en c++, les décorations changent) et j'ai donc trouver que pour obtenir els decorations C on utilise soit EXTERN_C dans le prototype&implementation, soit extern "c"{la fonction ici}
    Sauf que ça ne résou pas mon problème :s

    Histoire de voir ce qu'il en était, j'ai decompiler la dll avec hollydbg et voici la liste d'export :
    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
    Names in InjectMe
    Address    Section    Type      Name                                    Comment
    10001000   .text      Export     <ModuleEntryPoint>                      3 arguments
    100011D0   .text      Export     _ZN7CMsgBoxC2ESsSsNS_10ButtonTypeENS_8
    100012E4   .text      Export     _ZN7CMsgBoxC1ESsSsNS_10ButtonTypeENS_8
    100013F8   .text      Export     _ZN7CMsgBoxD2Ev
    100014A2   .text      Export     _ZN7CMsgBoxD1Ev
    1000154C   .text      Export     _ZN7CMsgBox8SetTitleESs
    10001566   .text      Export     _ZN7CMsgBox6SetMsgESs
    10001584   .text      Export     _ZN7CMsgBox9SetButtonENS_10ButtonTypeE
    10001592   .text      Export     _ZN7CMsgBox7SetIconENS_8IconTypeE
    100015A0   .text      Export     _ZN7CMsgBox4ShowEP6HWND__
    100016F0   .text      Export     DllEntryPoint@12
    10001B66   .text      Export     InitHook
    10002206   .text      Export     EndHook
    10002220   .text      Export     MouseProc@12                            3 arguments
    10002370   .text      Export     _ZN3cio8SetTitleESs
    1000238E   .text      Export     _ZN3cioC2Ev
    10002404   .text      Export     _ZN3cioC1Ev
    1000247A   .text      Export     _ZN3cioD2Ev
    10002488   .text      Export     _ZN3cioD1Ev
    1003EC60   .text      Export     _ZSt3minIjERKT_S2_S2_
    10043000   .data      Export     _ZN3cio4coutE
    10043004   .data      Export     _ZN3cio3cinE
    10043008   .data      Export     _ZN3cio4cerrE
    10047020   .bss       Export     MemPartagee
    10047024   .bss       Export     VueDonnees
    10047028   .bss       Export     HInst
    10047030   .bss       Export     _ZN3cio6m_InstE
    1004D1AC   .idata     Import  ...
    VOici le prototype du point d'entrée dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL APIENTRY DllEntryPoint(HMODULE hinst, DWORD reason, LPVOID lpReserved)
    (a l'intérieur d'un extern "C"{})

    Quelqu'un aurait-il une idée de la source du problème? (Peut-être le nom de la fonction? un paramètre a la compilation?)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Tu peux aussi avoir DllMain, Tout est fonction du type de compilation de DLL, avec style VC++ ou non .

    Voir doc MSDN

  3. #3
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Citation Envoyé par swirtel Voir le message
    Tu peux aussi avoir DllMain, Tout est fonction du type de compilation de DLL, avec style VC++ ou non .

    Voir doc MSDN
    Donc tu me conseille d'essayer avec DllMain au lieu de DllEntryPoint?

    Edit : Il n'existe pas de mot dans la langue française qui puise exprimer a quel point je te suis reconnaissant ^_^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

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

Discussions similaires

  1. Link - Entry Point QtCore4.dll
    Par kirua_sama dans le forum Qt
    Réponses: 7
    Dernier message: 02/12/2009, 11h52
  2. Entry point d'un exe
    Par Moustico dans le forum C
    Réponses: 5
    Dernier message: 16/02/2006, 09h47
  3. Réponses: 17
    Dernier message: 28/07/2005, 08h20
  4. [State Event] Eléments Initial & Entry point
    Par Emerica dans le forum Autres Diagrammes
    Réponses: 2
    Dernier message: 12/11/2004, 14h50
  5. Réponses: 4
    Dernier message: 19/07/2004, 14h52

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