def __call__(self): mt = ida_nalt.opinfo_t() if ida_bytes.is_struct(self.flag): mt.tid = self.extra['id'] if ida_bytes.is_off0(self.flag) or ida_bytes.is_off1(self.flag): mt.ri = ida_nalt.refinfo_t(self.extra['flags'], self.extra['base'], self.extra['target'], self.extra['tdelta']) if ida_bytes.is_strlit(self.flag): mt.strtype = self.extra['strtype'] struc = ida_struct.get_struc_id(Event.encode(self.sname)) sptr = ida_struct.get_struc(struc) ida_struct.set_member_type(sptr, self.soff, self.flag, mt, self.eoff - self.soff)
def __call__(self): mt = ida_nalt.opinfo_t() if ida_bytes.is_struct(self.flag): mt.tid = self.extra["id"] if ida_bytes.is_off0(self.flag) or ida_bytes.is_off1(self.flag): mt.ri = ida_nalt.refinfo_t( self.extra["flags"], self.extra["base"], self.extra["target"], self.extra["tdelta"], ) if ida_bytes.is_strlit(self.flag): mt.strtype = self.extra["strtype"] struc = ida_struct.get_struc_id(Event.encode(self.sname)) sptr = ida_struct.get_struc(struc) ida_struct.set_member_type(sptr, self.soff, self.flag, mt, self.eoff - self.soff)
def implement(self): id_of_struct = ida_struct.get_struc_id(str(self._id)) sturct_obj = ida_struct.get_struc(long(id_of_struct)) flags = 0 size = 0 if self._value == "db": flags = ida_bytes.FF_BYTE size = 1 elif self._value == "dw": flags = ida_bytes.FF_WORD size = 2 elif self._value == "dd": flags = ida_bytes.FF_DWORD size = 4 elif self._value == "dq": flags = ida_bytes.QWORD size = 8 ida_struct.set_member_type(sturct_obj, int(self._offset), flags, ida_nalt.opinfo_t(), size)