How to change a value in memory space of another process
Asked Answered
T

4

20

If you could help me with this dilemma I have. Now, I know C \ C++, I know asm, I know about dll injection, I know about virtual memory addressing, but I just can't figure out how software like CheatEngine, and others, manage to change a variable's value in another process.

For those who don't know, 3rd party cheat engine tools can scan for values in the memory space of a program and identify the location of a variable with a given value and change it.

My question is, how do they do it?

Given an address, if I were to write C code, how could I change the value at that address belonging to another process without getting an invalid addressing error?

Thanks.

Technics answered 6/6, 2009 at 16:5 Comment(0)
P
14

I'm fairly certain those programs are pretending to be debuggers. On Windows, I would start with DebugActiveProcess() and go from there.

Oh, and the very useful looking ReadProcessMemory() function (and WriteProcessMemory()).

Perrie answered 6/6, 2009 at 16:9 Comment(2)
Thanks this is what i was looking for, works great. (For others reading this solution be sure to use DebugActiveProcessStop when done)Technics
Be sure to call DebugSetProcessKillOnExit() if you don't want the process you're debugging to die after you're done debugging it.Reclaim
D
6

On unix: ptrace()

Droit answered 6/6, 2009 at 16:21 Comment(2)
Can ptrace also modify the memory of the other process?Gershom
As opposed to which process?Droit
R
4

You can't do this with Standard C or C++ - you have to use operating system specific features. So you need to tell us which OS you are interested in.

Rant answered 6/6, 2009 at 16:10 Comment(1)
Sorry i did not specify, i am interested in Windows, but Linux would be great to, i am curious to try it there alsoTechnics
K
2

You may also be interested in Detours:

Software packaged for detouring Win32 and application APIs.

Kweisui answered 6/6, 2009 at 16:22 Comment(1)
Thanks read about detouring codingthewheel.com/archives/…. Fun experiment ASCII \ graffiti bomb. Too bad it's not freely \ easily available for 64 bitTechnics

© 2022 - 2024 — McMap. All rights reserved.