Beispiel #1
0
    def __init__(self):

        super(Ui_RenameClassDialog, self).__init__()
        self.d = QtGui.QDialog()
        self.setupUi(self.d)
        self.old_name = ""
        self.new_name = ""
        self.text_items = []
        self.functions = []
        self.header_files = []

        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.class_cb.editTextChanged.connect(self.oldname_changed)
        self.new_name_edit.textChanged.connect(self.newname_changed)
        self.include_all_cb.stateChanged.connect(self.all_state_changed)
        visual_style.set(self.d)

        self.structname_to_file_table = {}
        self.field_to_struct_table = {}

        for h in proj.header_files():
            hfile = hparser.HFile(h)
            for name in hfile.struct_list():
                self.structname_to_file_table[name] = h
                # for field in hfile.get(name).names():
                #     l = self.field_to_struct_table.get(field, [])
                #     l.append(name)
                #     self.field_to_struct_table[field] = l
        self.struct_completer = QtGui.QCompleter(
            self.structname_to_file_table.keys(), self.d)
        self.struct_completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
        self.class_cb.setCompleter(self.struct_completer)
Beispiel #2
0
    def __init__(self):

        super(Ui_RenameVarDialog, self).__init__()
        self.d = QtGui.QDialog()
        self.setupUi(self.d)
        self.old_name = ""
        self.new_name = ""
        self.vars = []
        self.functions = []

        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.old_name_edit.textChanged.connect(self.oldname_changed)
        self.new_name_edit.textChanged.connect(self.newname_changed)
        visual_style.set(self.d)

        self.structname_to_file_table = {}
        self.field_to_struct_table = {}

        for h in proj.header_files():
            hfile = hparser.HFile(h)
            for name in hfile.struct_list():
                self.structname_to_file_table[name] = h
                for field in hfile.get(name).names():
                    l = self.field_to_struct_table.get(field, [])
                    l.append(name)
                    self.field_to_struct_table[field] = l
Beispiel #3
0
    def __init__(self):

        super(Ui_FindVirtualCallDialog, self).__init__()
        self.d = QtGui.QDialog()

        self.setupUi(self.d)
        self.selected_text = idaapi.get_highlighted_identifier()
        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        visual_style.set(self.d)
Beispiel #4
0
    def __init__(self):

        super(Ui_GoToDialog, self).__init__()
        self.d = QtGui.QDialog()

        self.setupUi(self.d)
        self.goto_btn.clicked.connect(self.goto_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.goto_list.itemDoubleClicked.connect(self.item_double_clicked)
        visual_style.set(self.d)
        self.jump_list = []
Beispiel #5
0
    def check_new_var_name(self):

        try:
            if not self.old_struct:
                raise BaseException()
            new_var =  hparser.StructField(self.newvar_name_edit.text()).name
            if new_var in self.old_struct.names():
                visual_style.set_as_alarmed(self.newvar_name_edit)
            else:
                visual_style.set(self.newvar_name_edit)
        except:
            visual_style.set(self.newvar_name_edit)
Beispiel #6
0
    def __init__(self):

        super(Ui_FindTextDialog, self).__init__()
        self.d = QtGui.QDialog()

        self.setupUi(self.d)
        self.selected_text = idaapi.get_highlighted_identifier()
        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.only_named_functions.setVisible(False)

        visual_style.set(self.d)
Beispiel #7
0
    def __init__(self):

        super(Ui_CreateClassDialog, self).__init__()
        self.d = QtGui.QDialog()
        self.setupUi(self.d)
        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)

        self.class_name_edit.textChanged.connect(self.renew_class_definition)
        self.class_size_edit.textChanged.connect(self.renew_class_definition)
        self.class_name_edit.textChanged.connect(self.renew_file_name)
        visual_style.set(self.d)
Beispiel #8
0
    def __init__(self):

        super(Ui_FindFuncDialog, self).__init__()
        self.d = QtGui.QDialog()
        self.func_names = []
        self.jump_list = {}
        self.setupUi(self.d)
        self.goto_btn.clicked.connect(self.goto_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.goto_list.itemDoubleClicked.connect(self.item_double_clicked)
        self.filter_edit.textChanged.connect(self.filter_edit_changed)
        self.hide_unkfunc_cb.stateChanged.connect(self.filter_edit_changed)
        visual_style.set(self.d)
Beispiel #9
0
    def __init__(self):

        super(QuickMenu, self).__init__()
        self.d = QtGui.QDialog()
        self.button_clicked = None

        self.setupUi(self.d)
        self.selected_text = idaapi.get_highlighted_identifier()
        self.reload_headers_btn.clicked.connect(
            self.reload_headers_btn_clicked)
        self.goto_btn.clicked.connect(self.goto_btn_clicked)

        self.find_in_headers_btn.clicked.connect(
            self.find_in_headers_btn_clicked)

        self.find_in_decompiled_menu = QtGui.QMenu("", self.d)
        self.find_text_action = self.find_in_decompiled_menu.addAction(
            "Text/Var")
        self.find_virtual_call_action = self.find_in_decompiled_menu.addAction(
            "Virtual Call")
        self.find_text_action.triggered.connect(self.find_text_btn_clicked)
        self.find_virtual_call_action.triggered.connect(
            self.findvcall_btn_clicked)
        self.find_in_decompiled_btn.setMenu(self.find_in_decompiled_menu)

        self.rename_menu = QtGui.QMenu("", self.d)
        self.rename_class_action = self.rename_menu.addAction("Class")
        self.rename_class_action.triggered.connect(self.rename_class_clicked)

        self.rename_var_action = self.rename_menu.addAction("Variable")
        self.rename_var_action.triggered.connect(self.rename_btn_clicked)
        self.rename_btn.setMenu(self.rename_menu)

        self.create_menu = QtGui.QMenu("", self.d)
        self.create_class_action = self.create_menu.addAction("Class")
        self.create_var_action = self.create_menu.addAction("Variable")
        self.create_vtable_action = self.create_menu.addAction("VTable struct")
        self.create_class_action.triggered.connect(
            self.create_class_btn_clicked)
        self.create_var_action.triggered.connect(self.create_var_btn_clicked)
        self.create_vtable_action.triggered.connect(
            self.create_vtable_btn_clicked)

        self.create_btn.setMenu(self.create_menu)

        visual_style.set(self.d)
Beispiel #10
0
    def __init__(self):

        super(Ui_SaveBinaryDumpDialog, self).__init__()
        self.d = QtGui.QDialog()

        self.setupUi(self.d)
        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.save_file_button.clicked.connect(self.save_file_clicked)

        self.addr_edit.textChanged.connect(self.addr_changed)
        self.length_edit.textChanged.connect(self.len_changed)

        self.filename = ""
        self.addr = -1
        self.length = -1
        visual_style.set(self.d)
Beispiel #11
0
    def __init__(self):

        super(Ui_ReplaceDialog, self).__init__()
        self.d = QtGui.QDialog()

        self.do_mangled_fnnames = False
        self.do_unmangled_fnnames = False

        self.setupUi(self.d)
        self.replace_all_btn.clicked.connect(self.replace_all_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)

        self.mangled_fun_cb.stateChanged.connect(self.check_mangled_fun_names)
        self.unmangled_fun_cb.stateChanged.connect(
            self.check_unmangled_fun_names)

        visual_style.set(self.d)
Beispiel #12
0
    def __init__(self):

        super(Ui_CreateVTableDialog, self).__init__()
        txt = idaapi.get_highlighted_identifier()
        print txt
        start_ea = decompiled.get_ea(txt) if txt else idc.here()
        print start_ea

        self.d = QtGui.QDialog()
        self.setupUi(self.d)
        self.ok_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        self.name_edit.textChanged.connect(self.name_changed)
        self.prefix_name.textChanged.connect(self.prefix_changed)
        self.header_file_cb.clicked.connect(self.header_cb_switched)
        visual_style.set(self.d)
        self.vtable = decompiled.VirtualTable(start_ea)
        self.redraw()
Beispiel #13
0
    def __init__(self):

        super(Ui_CreateVarDialog,self).__init__()
        self.d = QtGui.QDialog()
        self.setupUi(self.d)
        self.save_btn.clicked.connect(self.ok_btn_clicked)
        self.cancel_btn.clicked.connect(self.cancel_btn_clicked)
        visual_style.set(self.d)
        self.success = False
        self.structname_to_file_table = {}
        self.field_to_struct_table = {}

        for h in proj.header_files():
            hfile = hparser.HFile(h)
            for name in hfile.struct_list():
                self.structname_to_file_table[name] = h

                for field in hfile.get(name).names():
                    l = self.field_to_struct_table.get(field,[])
                    l.append(name)
                    self.field_to_struct_table[field] = l



        self.class_cb.editTextChanged.connect(self.on_class_name_changed)
        self.old_var_name_edit.textChanged.connect(self.on_old_var_changed)
        self.array_index_edit.textChanged.connect(self.on_editors_changed)
        self.newvar_name_edit.textChanged.connect(self.on_editors_changed)

        self.verticalScrollBar.valueChanged.connect(self.on_scrolled)

        self.dest_text_edit.verticalScrollBar().valueChanged.connect(self.on_scrolled)
        self.source_text_edit.verticalScrollBar().valueChanged.connect(self.on_scrolled)

        self.old_struct_text = ""
        self.new_struct_text = ""
        self.old_struct = None
        self.new_struct = None

        self.struct_completer = QtGui.QCompleter(self.structname_to_file_table.keys(),self.d)
        self.struct_completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
        self.class_cb.setCompleter(self.struct_completer)

        self.fill_structname_list()
Beispiel #14
0
    def OnCreate(self, form):
        """
        Called when the plugin form is created
        """
        # Get parent widget
        self.parent = self.FormToPySideWidget(form)
        self.table_view = TableView_t()
        self.table_view.setModel(self.table_model)
        self.table_view.setSortingEnabled(True)
        self.table_view.setWordWrap(False)
        self.table_view.horizontalHeader().setStretchLastSection(False)
        self.adjustColumnsToContents()

        self.layout = QtGui.QVBoxLayout()
        self.layout.setSpacing(0)
        self.layout.addWidget(self.table_view)

        self.parent.setLayout(self.layout)
        visual_style.set(self.parent)

        self.adjustColumnsToContents()
Beispiel #15
0
    def OnCreate(self, form):
        """
        Called when the plugin form is created
        """
        # Get parent widget
        self.parent = self.FormToPySideWidget(form)
        self.table_view = TableView_t()
        self.table_view.setModel(self.table_model)
        self.table_view.setSortingEnabled(True)
        self.table_view.setWordWrap(False)
        self.table_view.horizontalHeader().setStretchLastSection(False)
        self.adjustColumnsToContents()
        # #

        self.func_view = QtGui.QTextEdit()
        self.func_view.setReadOnly(True)
        #        self.line_edit.setCenterOnScroll(True)
        self.func_view.setPlainText("")

        font = self.func_view.currentFont()
        font.setPointSize(10)
        self.func_view.setCurrentFont(font)

        # Populate PluginForm
        self.layout = QtGui.QVBoxLayout()
        self.layout.setSpacing(0)
        #        layout.setContentsMargins(0, 0, 0, 0)

        self.splitter = QtGui.QSplitter()
        self.splitter.setOrientation(QtCore.Qt.Vertical)

        self.splitter.addWidget(self.table_view)

        self.splitter.addWidget(self.func_view)
        self.layout.addWidget(self.splitter)

        self.parent.setLayout(self.layout)
        visual_style.set(self.parent)
        self.table_view.clicked.connect(self.table_view_clicked)
Beispiel #16
0
 def update(self):
     if hasattr(self, 'table_view'):
         visual_style.set(self.parent)
         self.show()
         self.adjustColumnsToContents()
Beispiel #17
0
 def __init__(self):
     super(Ui_TracebackDialog,self).__init__()
     self.d = QtGui.QDialog()
     self.setupUi(self.d)
     visual_style.set(self.d)
     self.tb_list.itemDoubleClicked.connect(self.item_double_clicked)