Beispiel #1
0
    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)
Beispiel #3
0
 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)