Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
qsynth-artifacts — Jeux de données de référence et artefacts de synthèse pour QSynth, contenant des fonctions C obfusquées par Tigress, des binaires x86_64, des traces d'exécution, la vérité terrain et des résultats d'AST synthétisés. | Kitploit
Outils/GitHubGitHub/werew/qsynth-artifacts
Analyse StatiqueAnalyse Dynamique (Sandboxing)Analyse de CodeRétro-ingénierieAnalyse de BinairesArticles et RechercheApprentissage et Éducation
GitHubwerew/qsynth-artifacts

qsynth-artifacts

Jeux de données de référence et artefacts de synthèse pour QSynth, contenant des fonctions C obfusquées par Tigress, des binaires x86_64, des traces d'exécution, la vérité terrain et des résultats d'AST synthétisés.

Voir le dépôt
114il y a 6 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

QSynth Synthesis Artefacts

Datasets

Ces artefacts fournissent les quatre datasets suivants :

  • syntia : 500 fonctions obfusquées avec EncodeArithmetic et EncodeData
  • custom_EA : 500 fonctions obfusquées avec EncodeArithmetic
  • custom_VR_EA : 500 fonctions obfusquées avec Virtualize et EncodeArithmetic
  • custom_EA_ED : 500 fonctions obfusquées avec EncodeArithmetic et Virtualize (la trace de la base de données est tronquée à 293 fonctions)

Un benchmark

Chaque répertoire de dataset contient les fichiers suivants :

  • original.c : fichier source contenant toutes les fonctions

  • obfuscated.c : fichier source obfusqué tel que généré par Tigress

  • run_tigress.sh : script Shell pour régénérer le fichier obfuscated.c

  • ground_truth.json : un fichier JSON contenant la ground truth. Pour chaque fonction, il contient l'expression originale (dans original.c) et son équivalent obfusqué dans (obfuscated.c)

  • obfuscated : binaire précompilé en x86_64 (no PIE)

  • trace.db : la trace d'exécution sous forme de base de données SQLite (probablement le fichier le plus intéressant)

  • results :

    • qsynth.log : la sortie brute du script de synthèse
    • qsynth.json : sortie traitable par QSynth (très probablement le deuxième fichier le plus intéressant)

Résultat

Le fichier qsynth.json contient pour chaque fonction les entrées suivantes, telles que :

{
  "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 et stop sont les offsets dans la trace d'exécution (donc l'id dans la DB). Ensuite, pour chaque expression, l'expression elle-même ainsi que sa taille en nœuds et sa profondeur. Puis dse_t, synthesis_t donnent respectivement le temps d'exécution symbolique et le temps de synthèse. is_simplified et is_fully_synthesized indiquent si la fonction a été simplifiée et, le cas échéant, si elle l'a été entièrement. sem_orig_obf, sem_obf_trit et sem_orig_synth indiquent si la sémantique est préservée entre, par exemple, l'original et le synthétisé (sem_orig_synth). "UNK" indique que cela n'a pas été vérifié ou que cela a abouti à un timeout.

Tables d'oracle de synthèse

Les tables utilisées pour les benchmarks sont disponibles ici : https://ret2libc.com/static/various/lts_15/ Ce sont des objets pickle Python. Les expressions sont encodées avec une notation polonaise inversée (RPN) similaire à celle de Syntia.

Télécharger l’outil