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 :
VOici le prototype du point d'entrée dans le code :
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 ...
(a l'intérieur d'un extern "C"{})
Code : Sélectionner tout - Visualiser dans une fenêtre à part BOOL APIENTRY DllEntryPoint(HMODULE hinst, DWORD reason, LPVOID lpReserved)
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?)
Partager