我需要有人来编辑标题,我找不到更好的标题。
假设有一个名为 source.exe
的简单程序:
#include <stdio.h>
int main()
{
int a = 5;
printf("%p", &a);
return 0;
}
我想编写另一个应用程序 change.exe
,它会更改上面的 a
。
我试过这样的:
int main()
{
int * p = (int*) xxx; // xxx is what have printed above
*p = 1;
printf("%d", *p);
return 0;
}
这是行不通的。假设我有管理员权限,有没有办法做我上面尝试过的事情?谢谢。
最佳答案
首先,当您运行第二个程序时,第一个程序中的 a
将早已消失(或加载到不同的位置)。其次,许多操作系统通过将程序加载到单独的空间来保护程序。
您真正需要的似乎是进程间通信 (IPC) 机制,特别是共享内存或内存映射文件。
关于更改另一个应用程序的地址指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326876/