新建和删除容器Dlls

时间:2010-06-18 11:18:53

标签: c++ windows

我想挂钩new和delete运算符。但我无法找到这些运算符所在的原始DLL。我使用了msvcr90.dll,msvsr90d.dll,msvcrt.dll,kernal32.dll,ole32.dll以及其他一些dll。但我的间谍应用程序无法找到新的和删除操作符。

如果有人可以告诉我在哪个DLL中定义了new和delete运算符。

2 个答案:

答案 0 :(得分:1)

它们位于msvcr90.dll中。不要忘记这些是C ++运算符,名称修改算法对它们起了相当大的作用。从dumpbin / exports输出复制:

 15    F 00063E99 ??2@YAPAXI@Z         // void * __cdecl operator new(unsigned int)
 ...
 17   11 00063F03 ??3@YAXPAX@Z         // void __cdecl operator delete(void *)

我使用了undname.exe实用程序将损坏的名称转换回来。还存在一些重载。

答案 1 :(得分:0)

正如您所说,newdelete是运算符,而不是函数。因此,以及仅作为C ++的特性,它们可能在标准C ++库(libstdc ++)中或在您​​正在使用的编译器中定义。