如何更改另一个进程的内存空间中的值

时间:2009-06-06 16:05:55

标签: c++ c windows linux memory-management

如果你能帮助我解决这个困境。现在,我知道C \ C ++,我知道asm,我知道dll注入,我知道虚拟内存寻址,但我无法弄清楚如何 CheatEngine等软件设法在另一个过程中改变变量的值。

对于那些不知道的人,第三方作弊引擎工具可以扫描程序存储空间中的值,并识别具有给定值的变量的位置并进行更改。

我的问题是,他们是如何做到的?

给定一个地址,如果我要编写C代码,如何更改属于另一个进程的地址的值而不会出现无效的寻址错误?

感谢。

4 个答案:

答案 0 :(得分:12)

我很确定那些程序假装是调试器。在Windows上,我将从DebugActiveProcess()开始,然后从那里开始。

哦,非常有用的ReadProcessMemory()函数(和WriteProcessMemory())。

答案 1 :(得分:4)

在unix上:ptrace()

答案 2 :(得分:3)

您无法使用标准C或C ++执行此操作 - 您必须使用特定于操作系统的功能。所以你需要告诉我们你感兴趣的操作系统。

答案 3 :(得分:2)

您可能也对Detours

感兴趣
  

打包绕过Win32和应用程序API的软件。