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