def couldBeQObjectVTable(self, vtablePtr): try: customEventFunc = self.extractPointer(vtablePtr + 8 * self.ptrSize()) except: self.bump('nostruct-3') return False if customEventFunc in (self.qtCustomEventFunc, self.qtCustomEventPltFunc): return True try: delta = int.from_bytes(self.readRawMemory(customEventFunc + 1, 4), byteorder='little') if (customEventFunc + 5 + delta) in (self.qtCustomEventFunc, self.qtCustomEventPltFunc): return True except: pass try: return 'QObject::customEvent' in cdbext.getNameByAddress( customEventFunc) except: return False
def putVtableItem(self, address): funcName = cdbext.getNameByAddress(address) if funcName is None: self.putItem(self.createPointerValue(address, 'void')) else: self.putValue(funcName) self.putType('void*') self.putAddress(address)