我正在学习 Win32API 。 我的程序有两个功能。 我尝试在 VC++ 中使用 Debug模式。我在调用虚拟函数时设置了断点
void CALLBACK Dummy(){
printf("\n Hello Dummy Func!");
}
//////////////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[]){
(breakPoint) Dummy();
}
当我调用 dumy() 函数时。程序跳转到地址012110D7作为流程代码
Dummy:
012110D7 jmp Dummy(12113A0h)
而虚拟函数的实际地址是12113A0h 我的问题是如何获取虚拟函数的真实地址是 12113A0h 当我在 Release模式下运行时,问题得到解决。 这是我第一次加入 StackOver 流程。我希望每个人都能帮助我。谢谢 !!嗡嗡声
最佳答案
此 jmp 指令由链接器插入,以支持调试配置中的编辑 + 继续。它允许在调试时编辑和编译代码。通过 jmp 指令的额外间接允许生成不同版本的函数,更改 jmp 目标以使更改生效。
通过“项目 + 属性”、“链接器”、“常规”、“启用增量链接”=“否”关闭“编辑并继续”。
关于windows - VC++中如何获取函数的真实地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034704/