固定内存我不需要分配?

时间:2010-12-07 22:18:28

标签: windows

我在任何win32进程中只需要一个固定的地址,我可以在不使用任何winapi函数的情况下存储8个字节。我也不能像fs:那样使用汇编程序前缀。我没有堆栈指针。

我需要什么:
-8字节的内存
- 恒定地址并出现在任何过程中 -read和write访问(通过指针,来自同一进程)
- 如果修改,应该不会使应用程序崩溃(至少不会立即崩溃)。

甚至不问,为什么我需要它。

3 个答案:

答案 0 :(得分:1)

我知道这样做的唯一方法是使用带有共享部分的DLL ...

// This goes in a DLL loaded by all apps that want to share the data
#pragma data_seg (".sharedseg")
long long myShared8Bytes = 0; // has to be initialized or this fails
#pragma data_seg()

然后,将以下内容添加到dll的链接命令中:

/SECTION:sharedseg,RWS

我也很好奇你为什么要这样......

答案 1 :(得分:1)

不是我推荐这个,但是PEB可能有一些你可以覆盖的未使用或无关紧要的字段。不过,我仍然认为这是一个可怕的想法。

答案 2 :(得分:0)

  

常数地址并存在于任何地方   过程

你将无法实现这一目标。 Win32使用分页内存,因此不同的进程可以访问相同的内存地址,即使它是不同的内存。