编译器:VC++ 2013 模式:发行编译器是否允许进行这样的优化?
故事:我了解了IAT挂钩。我决定在ExitProcess()上练习。只要替换函数返回,我就会崩溃。为什么?因为不知何故,编译器决定认为ExitProcess()后面的内容永远不会执行,因此代码不会生成。例如,当我把ExitProcess()放在if语句中时,一切都很顺利。那么这是如何有效的优化? ExitProcess()在DLL中,所以编译器甚至无法进行任何链接时优化(如果需要的话)。它只是奇迹般地假定ExitProcess()永远不会返回。
我认为编译器不应该做这样的事情。
好的,这是有道理的。 VC++是否使用某些平台特定的符号来表示这些函数? – NFRCR
我真的不知道。它们同样可能只是在编译器本身内部特别包含它。你必须看看我想的标题。 – Puppy