def __init__(self, vw): ''' The SymbolikEmulator is used to keep state on symbolik execution. ''' self._sym_meta = {} self._sym_vars = {} self._sym_mem = {} self._sym_rseed = '' self._sym_vw = vw self._sym_cconvs = {} # function emulation can be calling convention aware self._sym_expr_parser = v_s_expr.SymbolikExpressionParser(defwidth=vw.psize)
def __init__(self, vw, parent=None): self.vw = vw self.fva = None self.vwgui = vw.getVivGui() self.curemu = None self.cureffects = None self.symctx = viv_sym_analysis.getSymbolikAnalysisContext(vw) self.symexpr = viv_sym_expression.SymbolikExpressionParser( defwidth=vw.psize) if self.symctx == None: raise Exception('No Symboliks For: %s (yet)' % vw.getMeta('Architecture')) self.symctx.consolve = True QtGui.QWidget.__init__(self, parent=parent) e_q_memory.EnviNavMixin.__init__(self) self.setEnviNavName('Symboliks%d' % self.viewidx.next()) self.exprtext = QtGui.QLineEdit(parent=self) self.constraintext = QtGui.QLineEdit(parent=self) self.alleffs = QtGui.QCheckBox('all effects', parent=self) self.alleffs.stateChanged.connect(self.rendSymbolikPath) self.loop_count = QtGui.QSpinBox(parent=self) looplabel = QtGui.QLabel(QtCore.QString("Max Loops:"), parent=self) self.pathview = VivSymbolikPathsView(vw, parent=self) self.memcanvas = e_q_memcanvas.VQMemoryCanvas(vw, syms=vw, parent=self) self.pathview.pathSelected.connect(self.symPathSelected) self.exprtext.returnPressed.connect(self.renderSymbolikPaths) self.constraintext.returnPressed.connect(self.renderSymbolikPaths) fvalabel = QtGui.QLabel(QtCore.QString("Function VA:"), parent=self) inccblabel = QtGui.QLabel(QtCore.QString("Must Include VA:"), parent=self) navbox = HBox(fvalabel, self.exprtext, inccblabel, self.constraintext, looplabel, self.loop_count, self.alleffs) mainbox = VBox() mainbox.addLayout(navbox) mainbox.addWidget(self.pathview) mainbox.addWidget(self.memcanvas) self.setLayout(mainbox) self.updateWindowTitle()