Question

For those of you who don't know, Glide is a program for World of Warcraft that allows automation of the game by modifying its memory and essentially simulating input. I've seen snippets of code from similar programs, and they appear to be changing data at specific memory addresses.

Obviously there has to be some method of determining what addresses to change, and how to change them. How is this done? In a general sense, how can I alter the behavior of a program by changing its state in memory?

I realize this presents some ethical concerns. Using Glide or similar applications is a bannable offense, and I would be lying if I were to say I don't intend to try rolling my own version on this or other RPGs. As a programmer, writing scripts that play games for me is more fun than playing the games myself. But I am also interested in this from a computer science perspective. With most programming problems, even if I don't know exactly how to solve them I know where to begin, what resources to look at, and generally what the approach would be. In this case, though, I'm completely lost. Can anyone lead me in the right direction?

Was it helpful?

Solution

I think you need to look at a more simple example of basic memory changing to understand it.

Look for a program called Cheat Engine. Essentially it allows you to filter out memory locations by value.

It I have an imaginary game where the score is stored as an integer at an unknown memory location, what you would do is search for its initial value (zero) then change the score by doing something in the game, and apply another filter with the new value. Cheat engine will gradually show less and less 4 byte memory sequences which match the score, until you can be certain you have found it. Then it's just a case of updating that memory.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top