Пример #1
0
    def show_graph_view(self):
        self.r2_graph_view = R2ScrollArea()
        self.app.main_tabs.addTab(self.r2_graph_view, 'graph view')
        index = self.app.main_tabs.indexOf(self.r2_graph_view)
        self.app.main_tabs.setCurrentIndex(index)

        self.progress_dialog = utils.progress_dialog('building graph view...')
        self.progress_dialog.forceShow()

        self.r2graph = R2Graph(self.pipe)
        self.r2graph.onR2Graph.connect(self._on_finish_graph)
        self.r2graph.start()
Пример #2
0
    def _on_disassemble(self, ptr):
        if self.pipe is None:
            self._create_pipe()

        if self.current_seek != ptr:
            self.current_seek = ptr
            self.pipe.cmd('s %s' % self.current_seek)

        self.progress_dialog = utils.progress_dialog('running r2 analysis...')
        self.progress_dialog.forceShow()

        self.r2analysis = R2Analysis(self.pipe)
        self.r2analysis.onR2AnalysisFinished.connect(self._on_finish_analysis)
        self.r2analysis.start()
Пример #3
0
    def _on_click_search(self):
        pattern = self.input.text()
        if pattern == '':
            return 1

        # check if we already provide a hex string as input
        try:
            test = pattern.replace(' ', '')
            int(test, 16)
            pattern = test
        except ValueError:
            # search for string
            pattern = binascii.hexlify(pattern.encode('utf8')).decode('utf8')

        ranges = []
        self._search_results = []
        for i in range(self._ranges_model.rowCount()):
            item = self._ranges_model.item(i, 0)
            if item.checkState() == Qt.Checked:
                addr = self._ranges_model.item(i, 1)
                size = self._ranges_model.item(i, 2)
                ranges.append([addr.text(), size.text()])

        if len(ranges) == 0:
            return 1

        status_message = 'searching...'

        if self._blocking_search:
            self.progress = utils.progress_dialog(status_message)
            self.progress.forceShow()

        self._app_window.show_progress(status_message)
        self.input.setEnabled(False)
        self.search_btn.setEnabled(False)
        self.check_all_btn.setEnabled(False)
        self.uncheck_all_btn.setEnabled(False)

        self._pattern_length = len(pattern) * .5

        search_thread = SearchThread(self._app_window.dwarf, self)
        search_thread.onCmdCompleted.connect(self._on_search_complete)
        search_thread.onError.connect(self._on_search_error)
        search_thread.pattern = pattern
        search_thread.ranges = ranges
        search_thread.start()
Пример #4
0
    def show_decompiler_view(self):
        if not self.with_decompiler:
            return

        self.r2_decompiler_view = QPlainTextEdit()
        self.r2_decompiler_view.setVerticalScrollBarPolicy(
            Qt.ScrollBarAsNeeded)
        self.r2_decompiler_view.setHorizontalScrollBarPolicy(
            Qt.ScrollBarAsNeeded)
        self.app.main_tabs.addTab(self.r2_decompiler_view, 'decompiler')
        index = self.app.main_tabs.indexOf(self.r2_decompiler_view)
        self.app.main_tabs.setCurrentIndex(index)

        self.progress_dialog = utils.progress_dialog('decompiling function...')
        self.progress_dialog.forceShow()

        self.r2decompiler = R2Decompiler(self.pipe)
        self.r2decompiler.onR2Decompiler.connect(self._on_finish_decompiler)
        self.r2decompiler.start()