Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/werew/qsynth-artifacts
Statische AnalyseDynamische Analyse (Sandboxing)Code-AnalyseReverse EngineeringBinäranalysePapers & ForschungLernen & Bildung
GitHubwerew/qsynth-artifacts

qsynth-artifacts

Benchmark-Datensätze und Synthese-Artefakte für QSynth, enthaltend Tigress-obfuskierte C-Funktionen, x86_64-Binärdateien, Ausführungs-Traces, Ground Truth und synthetisierte AST-Ergebnisse.

Repository anzeigen
114vor 6 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

QSynth Synthese-Artefakte

Datensätze

Diese Artefakte stellen die folgenden vier Datensätze bereit:

  • syntia: 500 Funktionen, obfuskiert mit EncodeArithmetic und EncodeData
  • custom_EA: 500 Funktionen, obfuskiert mit EncodeArithmetic
  • custom_VR_EA: 500 Funktionen, obfuskiert mit Virtualize und EncodeArithmetic
  • custom_EA_ED: 500 Funktionen, obfuskiert mit EncodeArithmetic und Virtualize (der Datenbank-Trace ist auf 293 Funktionen gekürzt)

Ein Benchmark

Jedes Datensatzverzeichnis enthält die folgenden Dateien:

  • original.c: Quelldatei, die alle Funktionen enthält

  • obfuscated.c: obfuskierte Quelldatei, wie von Tigress generiert

  • run_tigress.sh: Shell-Skript zum Neugenerieren der obfuscated.c-Datei

  • ground_truth.json: eine JSON-Datei, die die Ground Truth enthält. Für jede Funktion enthält sie den ursprünglichen Ausdruck (in original.c) und sein obfuskiertes Gegenstück in (obfuscated.c)

  • obfuscated: vorkompiliertes Binary als x86_64 (kein PIE)

  • trace.db: der Ausführungs-Trace als SQLite-Datenbank (wahrscheinlich die interessanteste Datei)

  • results:

    • qsynth.log: die Rohausgabe des Synthese-Skripts
    • qsynth.json: von QSynth verarbeitbare Ausgabe (sehr wahrscheinlich die zweitinteressanteste Datei)

Ergebnis

Die qsynth.json enthält für jede Funktion die folgenden Einträge, wie zum Beispiel:

{
  "target_1": {
    "fun_name": "target_1",
    "start": 164,
    "stop": 238,
    "orig_ast": "~(b*d ^ d*d) - b",
    "orig_node": 10,
    "orig_depth": 5,
    "obfu_ast": "(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1 ^ b) - ((~(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1) & b) + (~(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1) & b))",
    "obfu_node": 229,
    "obfu_depth": 12,
    "triton_ast": "(((b & d)*(b | d) + (~b & d)*(~d & b) & d*d) - (d*d | (b & d)*(b | d) + (~b & d)*(~d & b)) - 1 ^ b) - (((d*d ^ (b & d)*(b | d) + (~b & d)*(~d & b)) & b) + ((d*d ^ (b & d)*(b | d) + (~b & d)*(~d & b)) & b))",
    "triton_node": 95,
    "triton_depth": 10,
    "synthesized_ast": "~((d*d ^ d*b) + b)",
    "synth_node": 10,
    "synth_depth": 5,
    "dse_t": 0.10445356369018555,
    "synthesis_t": 0.03491616249084473,
    "sem_orig_obf": "UNK",
    "sem_obf_trit": "UNK",
    "sem_orig_synth": "OK",
    "is_simplified": true,
    "is_fully_synthesized": true
  }
}

Start und Stop sind die Offsets im Ausführungs-Trace (also die ID in der DB). Dann für jeden Ausdruck der Ausdruck selbst sowie seine Knotengröße und Tiefe. Dann geben dse_t, synthesis_t jeweils die symbolische Ausführungszeit und die Synthesezeit an. is_simplified und is_fully_synthesized geben an, ob die Funktion vereinfacht wurde und falls ja, ob sie vollständig vereinfacht wurde. sem_orig_obf, sem_obf_trit und sem_orig_synth geben an, ob die Semantik beispielsweise zwischen Original und Synthetisiertem erhalten bleibt (sem_orig_synth). "UNK" gibt an, dass es nicht überprüft wurde oder dass es zu einem Timeout kam.

Synthese-Orakel-Tabellen

Die für die Benchmarks verwendeten Tabellen sind hier verfügbar: https://ret2libc.com/static/various/lts_15/ Sie sind Python-Pickle-Objekte. Ausdrücke sind mit einer ähnlichen Reverse-Polish-Notation (RPN) wie bei Syntia kodiert.

Tool herunterladen