示例#1
0
    def serialize(self):
        from_field, to_field = self.from_field.text(), self.to_field.text()
        target_addr = self.target_addr_field.text()
        restrict_from, restrict_to = self.restrict_from_field.text(
        ), self.restrict_to_field.text()
        try:
            if from_field != "":
                self.conf.from_addr = utils.to_addr(from_field)
            if to_field != "":
                self.conf.to_addr = utils.to_addr(to_field)
            if target_addr != "":
                self.conf.target_addr = utils.to_addr(target_addr)
            else:
                print "Target address is mandatory for generic analysis"
                return None
            if restrict_from != "":
                self.conf.restrict_values_from = utils.to_addr(restrict_from)
            if restrict_to != "":
                self.conf.restrict_values_to = utils.to_addr(restrict_to)
        except ValueError:
            print "Invalid values for either from/to or target address"

        dba_expr = self.dba_expr_field.text()
        if dba_expr == "":
            print "DBA Expr field must be filled !"
            return None
        else:
            self.conf.dba = dba_expr

        if self.satisfiability_radiobutton.isChecked():
            self.conf.kind = self.conf.SATISFIABILITY

        if self.values_radiobutton.isChecked():
            self.conf.kind = self.conf.VALUES
            self.conf.limit_values = self.values_limit_spinbox.value()

        if self.get_formula_checkbox.isChecked():
            self.conf.get_formula = True

        try:
            params = specific_parameters_t()
            params.typeid = params.GENERIC
            params.generic_params.CopyFrom(self.conf)
            return params
        except:
            print "Analysis specific arguments serialization failed"
            return None
示例#2
0
    def run(self):
        # -- GUI stuff
        self.result_widget.set_actions_visible_and_enabled(False)
        self.set_progress_visible(True)
        # -----------

        # Refill the configuration file
        if self.configuration.ksteps != 0 and self.config_widget.radio_path_routine.isChecked(
        ):
            self.k = self.configuration.ksteps  # Use the ksteps given if making the path on the whole routine

        self.result_widget.webview.append(
            "### Opaque predicates Detection ###\n")

        self.configuration.analysis_name = "static opaque"
        self.configuration.additional_parameters.typeid = self.configuration.additional_parameters.STANDARD

        target_val = str(self.config_widget.target_field.text())
        self.txt_dump = open("/tmp/" + idc.GetInputFile() + "_dump.txt", "w")
        start_tps = time.time()
        if self.config_widget.radio_addr.isChecked():
            addr = utils.to_addr(target_val)
            self.process_routine(idaapi.get_func(addr).startEA, pred_addr=addr)
        elif self.config_widget.radio_routine.isChecked():
            addr = idc.LocByName(target_val)
            if addr == idc.BADADDR:
                addr = utils.to_addr(target_val)
            self.process_routine(addr)
        elif self.config_widget.radio_program.isChecked():
            self.process_program()
        else:
            pass

        self.exec_time_total = time.time() - start_tps - self.exec_time_dep
        self.txt_dump.close()
        self.analyse_finished = True
        self.broker.terminate()

        # -- GUI stuff
        self.result_widget.set_actions_visible_and_enabled(True)
        self.set_progress_visible(False)
        # ------------
        self.analysis_terminated()
示例#3
0
    def serialize(self):
        target_addr = self.target_field.text()
        try:
            if target_addr != "":
                self.conf.target_addr = utils.to_addr(target_addr)
        except ValueError:
            print "Invalid values for target address"

        self.conf.uniq = self.uniq_checkbox.isChecked()

        try:
            params = specific_parameters_t()
            params.typeid = params.STANDARD
            params.standard_params.CopyFrom(self.conf)
            return params
        except Exception:
            print "Analysis specific arguments serialization failed"
            return None