def rename(self, name=None): """ Renames (and comments) the string variable in IDA. :param str name: New name to given encoded string. (defaults to decoded_string) """ name = name or self.display_name if not name: logger.warning( 'Unable to rename encoded string due to no decoded string: {!r}'.format(self)) # Set name and comment in stack variable. comment = '"{}"'.format(name[:self._MAX_COMMENT_LENGTH]) if len(name) > self._MAX_COMMENT_LENGTH: comment += ' (truncated)' if self.frame_id and self.stack_offset: idc.set_member_cmt(self.frame_id, self.stack_offset, comment, repeatable=1) var_name = re.sub('[^_$?@0-9A-Za-z]', '_', name[:self._MAX_NAME_LENGTH]) # Replace invalid characters if not var_name: raise ValueError('Unable to calculate var_name for : {!r}'.format(self)) var_name = 'a' + var_name.capitalize() idc.set_member_name(self.frame_id, self.stack_offset, var_name) # Add a comment where the string is being used. if self.string_reference: idc.set_cmt(self.string_reference, comment, 1)
def change_member_name(struct_name, offset, name): return idc.set_member_name(idc.get_struc_id(struct_name), offset, name)
def implement(self): idc.set_member_name(ida_struct.get_struc(self._id), self._offset, self._value)
def implement(self): idc.set_member_name(self._id, self._offset, self._value)
def name(self, value): if set_member_name(self._sid, self._offset, value) == 0: print("set_member_name(0x%X, 0x%X, '%s') has failed" % (self._sid, self._offset, value))