我在任何win32进程中只需要一个固定的地址,我可以在不使用任何winapi函数的情况下存储8个字节。我也不能像fs:那样使用汇编程序前缀。我没有堆栈指针。
我需要什么:
-8字节的内存
- 恒定地址并出现在任何过程中
-read和write访问(通过指针,来自同一进程)
- 如果修改,应该不会使应用程序崩溃(至少不会立即崩溃)。
甚至不问,为什么我需要它。
答案 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使用分页内存,因此不同的进程可以访问相同的内存地址,即使它是不同的内存。