EIP原则上总是指向将要执行的那条指令,因此,执行路线是_LdrpInitialize调用LdrpInitializationFailure,这个调用指令下面的push edi指令还没有执行过。而LdrpInitializationFailure内部又调用NtRaiseHardError发起硬错误报告。
栈回溯显示到哪一层和当前所处的上下文有关。对于这个问题,没有必要看调用LdrpInitializationFailure 之后的内容了...
那么栈里为何没有LdrpInitializationFailure和NtRaiseHardError函数呢,如果这两个函数已经ret了,怎么还会报错呢
赫赫,如我前面所说,“栈回溯显示到哪一层和当前所处的上下文有关”,你如果把当前上下文切换到LdrpInitializationFailure所在的栈帧,那么可以看到啊。现在的上下文是在_LdrpInitialize函数中,所以栈回溯也就显示到这一层...
因为现在“调试”的是一个Dump文件,也就是一张“快照”,看到的东西和拍摄时的“取景范围”是有关的... 有些东西可能没有拍摄完整,但是它是客观存在的。