C++ 程序中变量的基/静态地址是什么?

C++ 程序中变量的基/静态地址是什么?,c++,pointers,memory,memory-management,stack,C++,Pointers,Memory,Memory Management,Stack,我正在做一些关于黑客的研究,我发现了一些关于内存黑客的作弊引擎教程。 如果我们想找到一个变量的内存地址,我们必须使用作弊引擎扫描进程的内存以找到地址。但是,由于这些地址是动态的,因此每次运行此游戏的新进程时,地址都会发生变化 因此,本教程介绍了静态地址,这些地址不会因游戏的每个实例而改变。为了找到这个地址,我们必须重复扫描“什么访问这个地址”,使用前一次扫描中汇编行的寄存器来找到下一个地址。 大会的形式将是: 操作码[esi+偏移量] 最后,我们得到一个地址和一个偏移量,正好是基址 但是这是如何

我正在做一些关于黑客的研究,我发现了一些关于内存黑客的作弊引擎教程。 如果我们想找到一个变量的内存地址,我们必须使用作弊引擎扫描进程的内存以找到地址。但是,由于这些地址是动态的,因此每次运行此游戏的新进程时,地址都会发生变化

因此,本教程介绍了静态地址,这些地址不会因游戏的每个实例而改变。为了找到这个地址,我们必须重复扫描“什么访问这个地址”,使用前一次扫描中汇编行的寄存器来找到下一个地址。 大会的形式将是:

操作码[esi+偏移量]

最后,我们得到一个地址和一个偏移量,正好是基址

但是这是如何工作的呢


另外,我也不太理解基址的概念。它是程序加载到内存中的某种相对地址吗?这样,当我们再次加载程序时,它不会改变?

所讨论的变量可能存储在运行时动态分配的类中,这就是为什么变量的地址在每次运行时都会改变。在动态分配时,必须引用该地址,这就是静态地址开始发挥作用的地方。在您的示例中,
ESI
可能被分配了所分配类的基本内存地址,例如使用
mov-ESI、[somevar]
语句(其中
somevar
是包含所分配地址的指针变量)和
offset
是类内目标变量的字节偏移量。因此,首先查找
somevar
,然后您可以跟随它找到目标变量。

我想确保我理解:您在问“一些作弊引擎”是如何工作的?更多关于基本指针是如何工作的