use of OOAnalyzer result in Ghidra #203
-
I am trying to recover a C++ based library (its respective source has been lost) from a small Win32 executable. This is the first time I am using the respective tools so there are probably many point that I don't know how to do properly yet. By manual inspection in Ghidra I already had a rough idea that the respective code is probably located in the 0x407000 to 0x40fffff address range. I then ran the ooanalyzer and imported its json output via the Kaiju plugin into Ghidra. It seems that ooanalyzer indeed detected classes which include functions that I had manually identified to be part of the library functionality. I am not familiar with the low level memory representation of respective C++ classes/objects and my below questions might be due to that lack of understanding:
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
There is some logic to identify a "representative" address for a class here. In the worst case, a class identifier can just be a method address though.
It sounds like 0x409370 was (incorrectly) not detected to be a method at all. This can be caused by a variety of things. The best advice is probably to look at the log when generating the .facts and .serialize files. You can also see the instructions here. If you can't find anything obvious, we can look into it more. It could be a bug. There is generally no simple list of methods. If the method is virtual, it will be present in a virtual function table which we can find.
In general, it's best if you can run the analysis on everything. @sei-ccohen might have some advice here. |
Beta Was this translation helpful? Give feedback.
There is some logic to identify a "representative" address for a class here. In the worst case, a class identifier can just be a method address though.