First of all, thanks for the responses. I made a good chunk of progress on stuff yesterday, and I can clarify a lot of what I'm doing.
First of all, I'm working in C#. I started originally in C++, then realized I can't do GUI work for garbage in that, so switched to C# so I could use Visual Studio.
Secondly, I did find the Stage memory location, which I don't know why I couldn't find it on my first look. So now I don't have to worry about the "keylogger" stuff.
But here's where we get tricky again. I'm currently working on EoSD, because that's my favorite one, and I originally intended this just to be an EoSD utility. I have all the relative locations found, in terms of where they load based on the th06.exe location. But from what I can tell, this .exe memory location is not always going to be the same, even though it is/has been the same the four computers I have access to test on.
The code I've been using is basically
var array = Process.GetProcessesByName("th06e");
if (array.Length != 0)
{
EoSD_Process = array[0];
}
array = Process.GetProcessesByName("th06");
if (array.Length != 0)
{
EoSD_Process = array[0];
}
processHandle = OpenProcess(PROCESS_ALL_ACCESS, false, EoSD_Process.Id);
TotalScore.Text = BitConverter.ToInt32(ReadMemory(ScoreLocation, 4, this.processHandle), 0).ToString("D10");
Where as of right now, ScoreLocation is 0x0069BCA0, which it has been consistently on these four computers. This is also the location CheatEngine gives me. As far as I know, this is a static memory location, and is not offset by the EoSD process, unless I'm just flat out wrong, and it works because that is just the offset from the EoSD process, in which case I have the meat of the EoSD utility done, and just have to do some touchups.
Is this sounding about right? If not, how do I find the EoSD process starting point, so at least for that game I can set the offsets relative to that, as I think EoSD always has the same offsets for the score/live/etc fields