-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
legoavengers upstream error #181
Comments
Also, it took 11.7 days to reach this error. |
So 0x1987608 is MechShooterGunAddOn::`vftable' according to IDA. But also according to IDA, there are two other vftables with the same name, at 0x1987620 and 0x198762C.
The table at 0x198762C is installed at 0xecd233 and 0xecf0d3, which we miss. |
I think 0xea3830 is a constructor, but I would appreciate someone else looking at it too, such as @RolphWoggom or @sei-ccohen. There are definitely some weird things going on. |
So for some reason OOAnalyzer thinks that all three MechShooterGunAddOn vftables are the same size... |
This is probably part of the issue:
|
I bet we are getting the Derived conclusions from RTTI, but I haven't confirmed that yet. |
Yes, I believe RTTI is the problem. RTTI says:
and
We seem to be misinterpreting the RTTI since only the one VFTable is installed at offset 0:
@sei-ccohen I think you will probably need to look into this one. |
I may have jumped the gun on blaming RTTI. reasonMergeClasses_E should handle I think the problem is instead with the second rule of |
I wrote a rather detailed description of the problem in email and it didn't save. But the short explanation of the problem is that MechShooterGunBaseAddon directly inherits from a single parent, but one of its parent's ancestors inherits from multiple classes. Any descendant from the multiple inheritance class is going to have multiple vftables. Here is the exact hierarchy from the problem
This is a problem because in some rules we have conflated inheritance offset with vftable offset. reasonVFTableSizeGTE is a good example. We only compare by inheritance offset, which is 0 here, but there are three vftables each with different offsets. |
This is really #207 |
I left the original run that was not making any progress going, and it just terminated. Unfortunately, in an error, but I guess that is still progress. We managed to get to:
Entering stage guessConstructor.
Here is the end of the log:
Originally posted by @sei-eschwartz in #175 (comment)
The text was updated successfully, but these errors were encountered: