1

I'm new on this, sorry for bad usage of terms or overextending an explanation. I'm learning code languages and the way I found to bring it to my world so I can learn it better was coding for/with games i play.


When a window close on the game a function needs to be called, when the character move or you pick an item, everything has a command, function, process or some value of an address change and etc... What i wanted to know is if there something that shows me on real time every call, every value change, address value change, etc...

Nowadays i have to reach some value address by CheatEngine, changing the value till i find the correct address. With this kind of thing i would have a list off things that is happening right now, and a "log" of the past things, then i go to the exact time that i did something, so i would have to look on that peace of the list and discover what did my "something"

  1. Click on a button;
  2. Check on the real-time thing what happened at the time of the "Click on a button" process;
  3. Discover what call was responsible for that and what it did;
  4. Now i can code something that do what "Click on a button" do, without needing to actually click on that button;

I have seen it somewhere, thats why i'm asking here, if i'm totally wrong and this doesn't exist, i'm sorry, i will delete this post.

1
  • 2
    this is quiet broad scope. start with message loop and dig further about SendMessage. each normal gui application has a loop which checks periodically for messages . each message generated globally (key press ,mouse movement) etc has a hwnd it is meant for each message is parsed and either acted upon or discarded it is like a post office all the letters are collected sorted and dispatched to the address if no reciever it is sent back or lies in some dump to get discarded
    – blabb
    Jul 31, 2017 at 3:08

2 Answers 2

0

If cheatengine is insufficient, and debugging feels like too much, a middle ground could be using API monitoring tools. API monitoring tools will, in one way or another, hook all (or most) APIs being called by a process and record most of the input and output of every call. This obviously slows down the process considerably but if that is acceptable will provide a lot of data in a readable and useful way.

I often use rohitab's API Monitor as it's very flexible and manages to provide a lot of information per API.

4
  • I would be able to see a address changing its value for exemple ? or a address adding a value at another address and things like that ?
    – Bruno Cerk
    Aug 4, 2017 at 15:57
  • And thanks for the information, didn't knew nothing about that API Monitor, i will definitely search more about it
    – Bruno Cerk
    Aug 4, 2017 at 15:58
  • You won't be able to monitor arbitrary memory regions using an API monitor, you'll be able to see which API functions are called, identify windows message processing loops and see what APIs are called by that click of a button.
    – NirIzr
    Aug 4, 2017 at 16:01
  • Understood, thanks very much. Do you know any "learning material" for that kind of tool related to games process ? if not, i'm already digging into API Monitor and what it does anyway, but if i could find something more related to the "area" that i want to apply it, would be nicer
    – Bruno Cerk
    Aug 4, 2017 at 16:27
0

sounds like you need something that implements differential debugging to quickly pinpoint the code which was executed in one case (e.g. clicking the button) but not others (not clicking). An early tool implementing this approach was PaiMei by Pedram Amini. Unfortunately it's been abandoned and probably won't work with recent software. IDA has a trace recording/diffing feature which may be used for this purpose. You can also write your own tool based on some debugging framework or a DBI engine like PIN.

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.