更改另一个应用程序的地址指针

标签 c pointers access-violation

我需要有人来编辑标题,我找不到更好的标题。


假设有一个名为 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/

相关文章:

c++ - 破坏 std::stringbuf 导致访问冲突

c - 如果数字与 {-1,1,2,-2} 不同,则使程序不计数

c - scanf() 将换行符保留在缓冲区中

c++ - 未处理的异常 - 如何解决它,C++

c - 指向一维数组和二维数组有什么区别?

c++ - 指针问题

javascript - 将 C 翻译成 JavaScript

c - 这个 C 中的数组程序如何给出结果 10?

java - 在 64-Win 7 上的 32 位 JVM 中读取 C++ 中的 JNI-ByteBuffer 时发生访问冲突

c# - Emgu.CV,CvBlob.BoundingBox抛出System.AccessViolationException