C++: How do applications like Cheat Engine and ArtMoney work?
After asking this question (C++: Can I get out of the bounds of my app’s memory with 开发者_C百科a pointer?),
I decided to accept it isn't possible to modify other app's memory with pointers (with a modern OS).But if this isn't possible, how do programs like ArtMoney and CheatEngine work?
Thanks
Check these functions: ReadProcessmemory WriteProcessmemory
It is possible to read process memory on Windows. There is a function, called ReadProcessMemory
in kernel32.dll
: http://msdn.microsoft.com/en-us/library/ms680553(v=VS.85).aspx
This is used by most applications that change memory of other applications. It can also be used to communicate between two processes (though mostly not recommended).
CheatEngine
is a debugger with a non-traditional interface.
Just to give a plain simple explanation - dump / hot search the process memory for specified value and modify it. You can do it using some plain WinAPI functions or using some native API routines (I suppose so).
That's obviously the reason why they fail, for example, if game state is stored with some encryption. That's also the reason you would need to change your value several times and then make your search again (to avoid search collisions, because definitely different memory blocks could hold the same value).
精彩评论