Mac OS 上是否有指向指针的静态地址?

逆向工程 C++ C 指针 苹果系统
2021-07-04 22:56:38

鉴于以下示例代码:

#include <iostream> 

struct Data {
    int a;
    int b;
    int c;
};

int main() {
    Data *d = new Data;
    d->a = 1337;
    d->b = 1338;
    d->c = 1339;

    std::cout << d << std::endl;

    return 0;
}

打印出指针的地址d永远不会相同(这似乎合乎逻辑)。但是指向 of 基址的指针d也永远不会相同。

有没有办法找到一个始终相同并指向 的基址的静态地址d或者我需要通过签名扫描来做到这一点吗?

主要目的是始终有一个指向 的基址的指针d,而不会在我重新启动程序时对其进行反汇编。

1个回答

通过d在 main() 中声明它是一个局部作用域变量,它存在于堆栈中,因此是动态的。

如果你在 main 之外声明这个指针,它将是一个全局变量,并且每次都具有相同的地址,只要有作为操作系统安全措施提供的已知内存随机化。