如果你能帮助我解决这个困境。现在,我知道C \ C ++,我知道asm,我知道dll注入,我知道虚拟内存寻址,但我无法弄清楚如何 CheatEngine等软件设法在另一个过程中改变变量的值。
对于那些不知道的人,第三方作弊引擎工具可以扫描程序存储空间中的值,并识别具有给定值的变量的位置并进行更改。
我的问题是,他们是如何做到的?
给定一个地址,如果我要编写C代码,如何更改属于另一个进程的地址的值而不会出现无效的寻址错误?
感谢。
答案 0 :(得分:12)
我很确定那些程序假装是调试器。在Windows上,我将从DebugActiveProcess()开始,然后从那里开始。
哦,非常有用的ReadProcessMemory()函数(和WriteProcessMemory())。
答案 1 :(得分:4)
在unix上:ptrace()
答案 2 :(得分:3)
您无法使用标准C或C ++执行此操作 - 您必须使用特定于操作系统的功能。所以你需要告诉我们你感兴趣的操作系统。
答案 3 :(得分:2)
您可能也对Detours:
感兴趣打包绕过Win32和应用程序API的软件。