2010-10-24 6 views
0

J'ai un DllMain défini comme ceci:DllMain pas appelé

BOOL APIENTRY DllMain(HMODULE hModule, 
        DWORD ul_reason_for_call, 
        LPVOID lpReserved 
       ) 
{ 

int i=0, DoHijack=0; 

switch (ul_reason_for_call) 
{ 
case DLL_PROCESS_ATTACH: 
    hMod = hModule; 
    hProcessCenter = ::FindWindow(NULL, _T("Form1")); 

    ExtractPaths(hModule, ExePath, &kNTIExeName, kNTIDllPath, &kNTIDllName); 

    //Only hook target processses 
    for(i=0; i < NB_TARGETS; i++) 
    { 
     if(strstr(kNTIExeName, Targets[i])) 
      DoHijack=1; 
    } 

    if(DoHijack) 
    { 
      DetourTransactionBegin(); 
     DetourUpdateThread(GetCurrentThread()); 
     DetourAttach(&(PVOID&)Real_DrawText, Mine_DrawText); // <- magic 
     DetourAttach(&(PVOID&)Real_ExtTextOut, Mine_ExtTextOut); 
     DetourTransactionCommit(); 
    break; 
    }  

case DLL_THREAD_ATTACH: 
     break; 
case DLL_THREAD_DETACH: 
case DLL_PROCESS_DETACH: 
     DetourTransactionBegin(); 
     DetourUpdateThread(GetCurrentThread()); 
     DetourDetach(&(PVOID&)Real_DrawText, Mine_DrawText); 
     DetourDetach(&(PVOID&)Real_ExtTextOut, Mine_ExtTextOut); // <- magic 
     DetourTransactionCommit(); 
    break; 
} 
return TRUE; 
} 

Ce projet est que je l'ai acheté la maison du travail et après je compile et exécutez la DllMain est jamais appelé, d'où mon problème qui est le commutateur process_attach n'est jamais touché. Qu'est-ce qui pourrait causer cela? Quelque chose dans le compilateur, l'une des options de liaison?

Les fonctions dll parfaitement au travail ...

Merci.

+0

Comment "exécutez-vous" la DLL? – wj32

+1

Quel type d'entreprise travaillez-vous pour expédier des produits qui cachent les DLL? C'est malveillant, votant pour fermer. –

+0

Que faites-vous dans 'DllMain'? Pouvez-vous poster du code s'il vous plaît? – nakiya

Répondre

0

Vous ne pouvez pas "exécuter" une DLL. Peut-être que vous l'avez construit comme un projet exécutable, pour lequel DllMain n'a pas de signification particulière.

+0

Désolé, juste un mauvais choix de mots, son compilé en DLL. Comme je l'ai dit, tout fonctionne bien quand je compile sur mon ordinateur de travail, mais pas à la maison, je pense que l'un des paramètres de compilation est différent et je me demande si quelqu'un sait lequel ... – flavour404

0

regarda avec des yeux frais ce matin et réalisé que DllMain était appelé mais en fait je l'avais fait une erreur dans l'une des valeurs NBTargets contrôle qui est la raison pour laquelle mon code n'a pas été mise à feu ...

retour pour cela ...