我想挂钩new和delete运算符。但我无法找到这些运算符所在的原始DLL。我使用了msvcr90.dll,msvsr90d.dll,msvcrt.dll,kernal32.dll,ole32.dll以及其他一些dll。但我的间谍应用程序无法找到新的和删除操作符。
如果有人可以告诉我在哪个DLL中定义了new和delete运算符。
答案 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)
正如您所说,new
和delete
是运算符,而不是函数。因此,以及仅作为C ++的特性,它们可能在标准C ++库(libstdc ++)中或在您正在使用的编译器中定义。