2010-06-18 5 views
0

Je veux accrocher de nouveaux opérateurs et supprimer. Mais je suis incapable de localiser les DLL d'origine où résident ces opérateurs. J'ai utilisé msvcr90.dll, msvsr90d.dll, msvcrt.dll, kernal32.dll, ole32.dll et quelques autres dll ainsi. Mais mon application d'espionnage est incapable de localiser les opérateurs nouveaux et supprimés.nouveau et supprimer des conteneurs Dlls

Je souhaite que quelqu'un puisse me dire dans quel DLL les opérateurs new et delete sont définis.

+0

Il est légal de définir vos propres opérateurs nouveaux et supprimés. –

Répondre

0

Comme vous le dites vous-même, new et delete sont des opérateurs, pas des fonctions. En tant que telles, et en tant que fonctionnalités C++ uniquement, elles seront probablement définies dans la bibliothèque C++ standard (libstdC++) ou dans le compilateur que vous utilisez.

+0

Et sous Windows, ils se trouvent dans différentes bibliothèques en fonction du modèle de thread et de release/debug. – Joe

1

Ils sont dans msvcr90.dll. Ne pas oublier que ce sont des opérateurs C++, l'algorithme de gestion de nom fait un travail sur eux. Copié de la sortie dumpbin/exports:

15 F 00063E99 [email protected]@Z   // void * __cdecl operator new(unsigned int) 
... 
17 11 00063F03 [email protected]@Z   // void __cdecl operator delete(void *) 

J'ai utilisé l'utilitaire undname.exe pour reconvertir le nom mutilée. Plusieurs surcharges sont également présentes.