gpt4 book ai didi

C++ 将内存地址设置为值

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:49 25 4
gpt4 key购买 nike

我目前正在制作 2 个程序。其中之一将设置一个值,显示内存值和变量值。接下来它将等待用户按下回车键并再次显示该值。下一个程序将直接设置内存地址,因此修改其他代码中的值。

这是我的 pointer1.cpp 文件:

  1 #include "iostream"
2 using namespace std;
3
4
5
6 int main()
7 {
8 int x = 100;
9 cout << "The memory of \"x\" is " << &x << ". X = " << x << endl;
10 cin.get();
11 cout << x << endl;
12 }

示例输出是:

The memory of "x" is 0x7fff578589ac. X = 100

100

我怎样才能让我的第二个应用程序修改内存地址 0x7fff578589ac

谢谢。

最佳答案

这在纯 C++ 中是不可能的。您将不得不求助于操作系统方法。

例如,在 Windows 上,您可以使用 OpenProcessWriteProcessMemory 等 API 来修改另一个进程的内存。

因为这种方式相当慢,所以经常使用的替代方法是将程序加载到要修改的目标进程的地址空间中。在 Windows 上,这可以通过将您的程序变成 DLL 并将其放入目标中来实现(请参阅“DLL 注入(inject)”)。

因为您评论了您的程序是否易受攻击:如果您的攻击者可以访问您的机器,是的。如果您的攻击者有权以写入权限打开您的进程,则可以。

关于C++ 将内存地址设置为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32653816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com