在内存中查找函数的地址

时间:2019-06-10 09:05:56

标签: c++ visual-studio pointers memory

为了娱乐起见,我想分解我的c ++代码,并了解了程序如何调用函数,我了解到字节0xE8代表调用指令,后跟4个字节,这些字节导致所需的函数成为第一条指令。通过使用Visual Studio内存查看器,在0xE8指令字节之后的4个字节不会导致该函数的第一条指令,即功能地址。

例如

printf地址是046FC90h->“ h”是什么意思?

我能够提取的4个字节是53 d1 06 00

enter image description here

1 个答案:

答案 0 :(得分:1)

您好,您的C代码设置如下

void Func() {
    printf("Just a Func");
}

我们有一个调用的函数,它会打印Just a Func,要获取此函数的地址,我们可以在其前面加上&,例如&Func

您看到的h代表十六进制(以16为基数),并且您看到的数字可以用3种方式表示,但并不是每个编译器都支持046FC90h0x046FC90,所有这些在十进制中表示{ 1}}

但是最初提出的问题是我们如何获得函数地址,即4652176运算符。

&