Пример #1
0
    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)
Пример #2
0
def change_member_name(struct_name, offset, name):
    return idc.set_member_name(idc.get_struc_id(struct_name), offset, name)
Пример #3
0
 def implement(self):
     idc.set_member_name(ida_struct.get_struc(self._id), self._offset,
                         self._value)
Пример #4
0
 def implement(self):
     idc.set_member_name(self._id, self._offset, self._value)
Пример #5
0
 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))