Replies: 2 comments 1 reply
-
OOAnalyzer may be a good solution, although the success rate on large games has been mixed. If you haven't already, you may want to see if there is RTTI data for the classes you are looking for. If there is, other tools might be easier. If the game is using a smart heap, you'll definitely want to manually annotate the new and delete methods. I wouldn't worry too much about unknown DLLs unless they seem related to the classes you are interested in. Your log ends with "Killed", which suggests that OOAnalyzer was killed because your machine was out of memory. You can probably confirm this by looking at the |
Beta Was this translation helpful? Give feedback.
-
It's good to hear that I'm not attempting something out of the realm of reality with this at least. Looks like it was killed for OOM:
I'm running ooanalyzer in WSL2 and I've got 16GB of ram. I'm not sure what you mean when you refer to manually annotating the new/delete methods. Are you referring to something related to ooanalyzer, or simply identifying and naming them in Ghidra? I haven't identified them as of yet while reversing stuff in ghidra. |
Beta Was this translation helpful? Give feedback.
-
I'm trying to use ooanalyzer on a relatively large program, specifically, the video game Enemy Nations, however the tool seems to crash while running analysis.
The game's source code was released, however, it appears to be missing at least one source file entirely (comprising at least 2 classes), and potentially more outside of the actual main executable.
I've been interested in modernizing the source code and creating an updated version of the game. However, the game appears to be missing source code in it's released form. I am not particularly experienced reverse engineering, although I'm not entirely unfamiliar with assembly. However, given that the source code I need to recover/recreate is largely comprised of a class which inherits several levels deep, and the game is quite large, I figured ooanalyzer was my best choice for getting some assistance even finding the functions in question.
However, upon running the first inspection, I realized that there will be some problems with this. The game uses smartheap as a replacement for new/free in the standard library, it also uses several DLLs for which there is no information in the database (miles sound system, as well as their own custom DLL for networking related stuff).
Here's a condensed list of the various warnings and errors I got before the program crashed:
I've seen mention of manually adding function information to the API database, so dealing with the stack delta issues shouldn't be too difficult. I can also increase memory limits, so hopefully I can solve that issue. But I have no idea what the other errors/warnings mean, or why the tool simply crashed.
Beta Was this translation helpful? Give feedback.
All reactions