sei-eschwartz
sei-eschwartz
``` reasonMergeVFTables_A(constructor, 0x7f7f58, 0x4e5730, 0x7f7f58, 0, factVFTableWrite(0x4e5763, 0x4e5730, 0, 0x7f7f58)). ``` This is connecting CMusicJingle's VFTable with constructor 0x4e5730. But several other methods also install this VFTable: ``` Concluding factVFTableWrite(0x6176de,...
I've never seen this before; the EXE you sent me actually has debug symbols embedded in it that IDA can read. This makes things a LOT easier!
Going back to the original sanity problem where we were inheriting from two offsets, here is the class hierarchy according to IDA: ``` .data:0087DA58 ; public class oCViewDocumentMap /* mdisp:0...
> I suspect that maybe 0x4e5730 is not a constructor for CMusicJingle That was wrong. 0x4e5730 is a constructor for CMusicJingle
0x4e4e30 is zCMusicSys_DirectMusic::zCMusicSys_DirectMusic. It's still pretty hard to understand even with symbols! These are not necessarily adjacent lines in the decompilation. ``` zCMusicTheme::zCMusicTheme((zCMusicTheme *)the_weird_object); the_weird_object[0] = (int)&zCMusicTheme::`vftable'; zSTRING::~zSTRING((zSTRING *)probably_part_of_weird_object); zSTRING::~zSTRING((zSTRING...
I think I got it! https://godbolt.org/z/fz4qhhGTn In this example, the object is not really needed, but the compiler still needs to allocate memory so it can run the constructors. So...
Here's a better example showing the classes don't even need to be related: https://godbolt.org/z/7T4vb9Yc9
My plan here is to disable reasonClassRelatedMethod_B for objects on the stack (and maybe globals?). We would make it into a guess for these objects. @sei-ccohen Is there a way...
@sei-ccohen > It's likely that only "type_Heap" is exported as a Prolog fact currently Seems like a problem :-)
@sei-ccohen Just a reminder that you are still looking into why thisPtrAllocation facts are not present for stack objects (I think)