我可以在C中获得RIP地址吗?

问题描述 投票:-1回答:1

基本上我试图将RSP,RBP和RIP地址变成指针。

码:

#include <stdio.h>

int main()
{
    char buf[500];
    int *rsp;
    int *rbp;
    int *rip;
    strcpy(buf, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
    ptr = buf;
    printf("[buf:%p:%s]\n[rsp:%p:%s]\n", &buf, buf, rsp, rsp);

    return 0;
}

获取RSP地址时,上面的指针工作得很好。但我不知道如何获取RBP和RIP地址。

你能告诉我怎样才能将* rbp指向RBP地址并*转到RIP地址?

c cpu-registers
1个回答
2
投票
  • 当前的x86硬件不能正常工作,因此您无法获取任何寄存器的地址 - it just doesn't have one
  • 这是什么意思?这意味着你可以获得每个寄存器的值,但是你无法得到寄存器的地址 - 它们没有。
  • 例如,如果您在函数的开头执行以下操作,您将获得RIP指向的地址。
void foo(param a, param b)
{
   int dummy;
   int* rip = &dummy;
}

但请注意,此功能无法访问此功能。

© www.soinside.com 2019 - 2024. All rights reserved.