2

I have recently bought an economic simulation video game, but neither the docs not the game UI describe how to estimate some costs; the user needs to actually invest and spend their money, then discover how much is worth their business activity.

I decided to reverse engineer the game. I already have programming experience (that's what I do for a living), and I'm familiar with C/C++. I started learning ASM (x64)

I have already spotted (using Ghidra / x64dbg) the instructions that calculate the costs, but I have not yet "cracked" it. I would like to know how realistic it is to do what I want to do, and what it takes to do it. I'm also willing to take any recommendations / advice.

2 Answers 2

2

Here are my suggestions about reversing traditional offline games.

If the game uses a well known game engine, then you can search for tools that are specifically created for that engine.

If the game engine is unknown to you, then you have to do everything yourself. It usually starts with identifying the data structures inside the game.

Most games will show you some data, such as HP, MP, money, etc. You need to locate these data (which are possibly dynamically allocated) in the executable. A memory scanner such as Cheat Engine can be handy.

After that, you can set break points on some data that you are interested in, and see which part of the code modifies them. The code should now make some sense to you.

Sometimes it may get tricky, like playing a jigsaw puzzle. Eventually you will be able to totally understand everything, provided that you invest enough time into it. To do things efficiently, however, requires some experience.

5
  • 1
    How do I identify the game engine ?
    – devio
    Jan 13, 2023 at 15:58
  • 1
    There are different ways. New games (especially AAA games) usually don't hide this information, so you can just search for that online. Some old engines embed their signature text inside the executable, something like "made with XXX engine, copyright XXX" etc. These will be visible in disassembly code.
    – WhatsUp
    Jan 13, 2023 at 20:25
  • 1
    I search the strings in the disassembly code, and I found the Poco engine / framework mention. Would this be helpful ?
    – devio
    Jan 13, 2023 at 22:54
  • 1
    I suppose it's this project. They have source code available on github, which seems to be written mostly in Python. This probably means that a python decompiler is more relevant to you than assembly stuff.
    – WhatsUp
    Jan 14, 2023 at 16:07
  • I think it's this one pocoproject.org
    – devio
    Jan 19, 2023 at 18:36
1

If you've already spotted the instructions then you just need to work at converting the assembly into a higher level construct.

You can work on your assembly interpretation skills by compiling small pieces of C, then analysing the assembly. For example, write some code with a for loop, or a while loop, or a simple mathematical function.

Your Answer

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

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