我想钩住新的和删除操作符。但是我无法找到这些操作员驻留的原始DLL。我使用msvcr90.dll,msvsr90d.dll,msvcrt.dll,kernal32.dll,ole32.dll和一些更多的dll。但是我的间谍应用程序无法找到新的和删除的操作符。新增和删除容器Dll
如果有人能告诉我在哪个DLL中定义了新操作符和删除操作符,请很好。
我想钩住新的和删除操作符。但是我无法找到这些操作员驻留的原始DLL。我使用msvcr90.dll,msvsr90d.dll,msvcrt.dll,kernal32.dll,ole32.dll和一些更多的dll。但是我的间谍应用程序无法找到新的和删除的操作符。新增和删除容器Dll
如果有人能告诉我在哪个DLL中定义了新操作符和删除操作符,请很好。
正如你所说,new
和delete
是运营商,而不是功能。因此,作为仅限C++的功能,它们可能会在标准C++库(libstdC++)中定义,也可能在您使用的编译器中定义。
在Windows上,它们位于不同的库中,具体取决于线程模型和发布/调试。 – Joe 2010-06-18 11:29:50
它们在msvcr90.dll中。不要忘记,这些是C++操作符,名称修改算法在它们上完成了相当多的工作。从DUMPBIN /出口输出复制:
15 F 00063E99 [email protected]@Z // void * __cdecl operator new(unsigned int)
...
17 11 00063F03 [email protected]@Z // void __cdecl operator delete(void *)
我用undname.exe实用程序将重整名称转换回。还有几种重载。
定义您自己的新操作符和删除操作符是合法的。 – 2010-06-18 12:53:48