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.
Comment "exécutez-vous" la DLL? – wj32
Quel type d'entreprise travaillez-vous pour expédier des produits qui cachent les DLL? C'est malveillant, votant pour fermer. –
Que faites-vous dans 'DllMain'? Pouvez-vous poster du code s'il vous plaît? – nakiya