
Boîte à outils d'analyse statique et de récupération de structure pour les images PE protégées par ACE .qvm0
Ce sont les pilotes d'analyse utilisés pour produire les mesures citées dans le README et dans les notes de cas. Ils sont pilotés par arguments et réutilisables : chacun prend le chemin du PE (et les chemins de sortie) sur la ligne de commande.
À exécuter depuis la racine du dépôt, par exemple :
python scripts/extended_census.py <pe> <dynamic_edges.tsv>
| script | objectif |
|---|---|
verify_target_decodability.py | vérification de la densité de décodage des cibles native->VM par rapport à une population de contrôle |
verify_dynamic_coverage.py | intersection d'ensembles au niveau des pages prouvant si le code exécuté recoupe les sites de branchement |
verify_dynamic_edges.py | recoupement et validation aux limites des ensembles d'arêtes dynamiques vs statiques |
opaque_coverage.py | quelle proportion de l'ensemble des sites statiquement opaques la passe dynamique a atteinte |
extended_census.py | réconcilier le recensement complet des branchements indirects avec les sites observés |
external_decryptor_scan.py | analyser les modules frères pour la capacité de protection/mappage/écriture de pages |
task1_slice_all.py | tranche statique complète : résolution d'idiomes puis tranchage arrière, avec sortie d'arêtes |
task1b_dynamic_codelike.py | récupération dynamique d'arêtes restreinte aux entrées VM de type code |
task2_realctx.py | émuler depuis des contextes d'appel réels ; récupérer la disposition des emplacements de la pile |
task4_patch.py | correctif de désobfuscation préservant la longueur plus vérification de confinement |
Plusieurs d'entre eux existent pour falsifier une affirmation, c'est pourquoi ils sont conservés :
verify_target_decodability.py — compare une métrique de densité de décodage à une
population de contrôle. C'est le script qui a montré qu'un contrôle ponctuel de trois cibles
n'était pas représentatif.verify_dynamic_coverage.py — l'intersection d'ensembles au niveau des pages qui a prouvé
un bug de traceur plutôt qu'un fait architectural lorsque le traceur a signalé zéro
branchement indirect sur 3M d'instructions.extended_census.py — a montré que le recensement original des branchements indirects n'énumérait
que 35 % de la population réelle parce qu'il ne correspondait qu'aux formes de registres.external_decryptor_scan.py — analyse de capacité sur les modules frères ; l'
hypothèse pour laquelle il a été construit a ensuite été réfutée par une observation dynamique
d'absence d'écriture, et le résultat négatif est enregistré avec lui.Restez honnêtes : un pilote qui ne fait que confirmer ne vaut pas la peine d'être conservé.