: Starten Sie die Ausführung

Die Registeransicht kann verwendet werden, um den Wert der Register des aktiven Zustands zu visualisieren. Der Wert eines Registers kann durch Doppelklicken geändert werden. Mit dem Menü mit der rechten Maustaste ermöglicht::

Die Speicheransicht kann verwendet werden, um den Wert eines Teils des Gedächtnisses des aktiven Zustands zu visualisieren. Durch Klicken auf "Speicher überwachen" kann der Benutzer eine Speicheradresse angeben, um zu überwachen. Das Widget zeigt 512 Bytes aus dieser Adresse. Die Speicheransicht ist in zwei Abschnitten aufgeteilt: eine Hexview und eine ASCII -Ansicht. Die Hexview zeigt den Hex -Wert jedes Byte nur, wenn das Byte zugeordnet und konkret ist. Wenn das Byte nicht kartiert ist, wird die _ angezeigt; Wenn das Byte symbolisch ist, zeigt das Widget den Charakter . .
Mit dem Menü mit der rechten Maustaste ermöglicht::
Dieses Widget ermöglicht die Erstellung von Puffern, die symbolische Daten enthalten.
Weitere APIs können über die Python -Hülle ausgeführt werden. Zum Beispiel können wir den Löser verwenden, um eine Bedingung für den aktuellen Zustand zu beweisen :
> >> import borzacchiello_seninja as seninja
> >> s = seninja . get_current_state ()
> >> s . solver . satisfiable ( extra_constraints = [ s . regs . eax == 3 ]) Der Code überprüft die Befriedigung von eax == 3 angesichts der Pfadbeschränkung des aktiven Zustands.
Konsultieren Sie das Wiki, um weitere Informationen über die Befehle zu erhalten.
Seninja gibt dem Benutzer die Möglichkeit, viele Teile der symbolischen Engine zu konfigurieren (z. B. Dimension von Seiten, Strategie für symbolische Speicherzugriff usw.). Auf alle verfügbaren Einstellungen können zugegriffen und geändert werden, indem Sie auf Edit/Preferences/Settings klicken und SENinja im linken Widget auswählen.
Getestet mit
4.0 mit persönlicher Lizenz3.114.8.14 Damit es funktioniert, müssen Sie Z3 mit PIP: $ pip3 install z3-solver