Can someone point me in the direction of the method the bot creators are using to inject keyboard events into the game without it being active? I've written a fairly decent packet scanner in python, but certain events require game input, and I'm not a fan of any of the standard methods of game control. I see viper doing injections via dll, but I'm not sure how to replicate that. I can call an external dll without any issue using ctypes, so if anyone wants to build me one, i'd be forever appreciative. Any help would be appreciated!
Edit: I found things.. that I'm unsure of being the correct route to go down, but I'm willing to learn, I'm just way out of my depth. I found a possibly helpful reference in this:
fasm.AddLine("retn");
fasm.AddLine("jmp 0x410000");
fasm.AddLine("call 0x410000");
byte[] a = fasm.Assemble();
fasm.InjectAndExecute(hProcess, dwBaseAddress);
fasm.Dispose();
Which I take to mean there is a table of memory addresses for functions the game performs when keys are pressed, such as X maps to this function, and N to this function. I am however, again, way out of my depth. I get the jist of the asm that's being called (go back where you came from, go here instead, run this), and could probably compile the dll, but where would I even begin to look to find those addresses?
And am I even looking in the right place?