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()
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()
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()
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()