Beispiel #1
0
    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)
Beispiel #2
0
    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()