,以及全局变量等等.这些初始化,都是在ininterm中初始化的,和全局变量初始化的位置一样,如果不太懂,请看.以前博客链接:
建立高级代码,查看其调用栈....调用流程图:
?
实战中反汇编查找全局对象
既然我们知道了atexit函数会调用析构,那么我们在IDA中搜索atexit函数,看看谁引用了它,则可以把全局对象一网打尽.
?
?
...五.堆中对象识别
高级代码:
MyTest *t = new MyTest ;
Debug下的汇编:
?
new 和malloc是一样的,new是对malloc的一个封装....为什么会这样:
在早期,硬件资源匮乏,内存想重复利用.
所以会有人显示的调用构造(vc6.0中可以)然后显示的调用析构进行管理,示例:
?...加上类域则可以调用构造了,那么析构我们是显示调用,所以看看汇编代码,会传入0,不会释放内存的.
?