I'm a software developer, with some knowledge in memory management but near zero experience in reverse engineering. I wonder if there is a way to detect which function a program calls at certain moment (e.g. a button is pressed), so I can attach to it from an external process and:

  • Listen to further calls and it's parameters
  • Force it's execution with my own parameters

I want to force a game to play a recorded games automatically on start, and attach to the notifications window for analysis purposes.

A naive approach could be using macros to simulate a human playing the recorded game, and text recognition to extract the notifications, but I was looking for something more "sophisticated". I always liked reverse engineering, and this seems like a good oportunitiy to give it a chance.

My assumption is that these 2 functions exist somewhere in the game:

  • Something like playRecord(match) that is called when the "Load replay" button is pressed to play the recorded match.
  • Something like showNotification(message) that is called when something happen to notify the user.

My goal is to be able to call the playRecord function on game startup to play a match, and hook to the showNotification function to save all the messages. Is this even possible? What tools should I look into? A debugger like x64dbg could fit?

Also, I thought that maybe using something like Cheat Engine I could identify the memory addresses pointing to the messages of my interest that are being showed on screen at any time. That could be useful too, but I dont know if those memory addresses are constant between executions, or I have to implement some kind of "dynamic identification".

I'm using Windows, as the game doesn't even support another operative system.

  • You can try Frida which is like a general purpose cheat engine framework. It allows function hooking and modification on various platforms. It loads itself into the traget process and then allows to perform various modifications, controlled by a Frida JavaScript snippet. As frida supports instant reload when the script is changed you don't need to restart the target process.
    – Robert
    Mar 25 at 10:36


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.