
Kit de herramientas de análisis estático y recuperación de estructura para imágenes PE protegidas con ACE .qvm0
Estos son los controladores de análisis utilizados para producir las mediciones citadas en el README y en las notas de caso. Son impulsados por argumentos y reutilizables: cada uno toma la ruta del PE (y las rutas de salida) en la línea de comandos.
Ejecutar desde la raíz del repositorio, por ejemplo:
python scripts/extended_census.py <pe> <dynamic_edges.tsv>
| script | propósito |
|---|---|
verify_target_decodability.py | verificación de densidad de decodificación de objetivos nativos->VM contra una población de control |
verify_dynamic_coverage.py | intersección de conjuntos a nivel de página que demuestra si el código ejecutado se superpone con los sitios de bifurcación |
verify_dynamic_edges.py | referencia cruzada y validación de límites de conjuntos de aristas dinámicos vs estáticos |
opaque_coverage.py | cuánto del conjunto de sitios estáticamente opacos alcanzó la pasada dinámica |
extended_census.py | conciliar el censo completo de bifurcaciones indirectas contra los sitios observados |
external_decryptor_scan.py | escanear módulos hermanos en busca de capacidad de protección/mapeo/escritura de páginas |
task1_slice_all.py | slice estático completo: resolución de modismos y luego slicing hacia atrás, con salida de aristas |
task1b_dynamic_codelike.py | recuperación dinámica de aristas restringida a entradas de VM similares a código |
task2_realctx.py | emular desde contextos de llamada reales; recuperar el diseño de ranuras del marco de pila |
task4_patch.py | parche de desofuscación que preserva la longitud más verificación de contención |
Varios de ellos existen para falsificar una afirmación, por lo que se conservan:
verify_target_decodability.py — compara una métrica de densidad de decodificación contra una
población de control. Es el script que demostró que una verificación puntual de tres objetivos
no era representativa.verify_dynamic_coverage.py — la intersección de conjuntos a nivel de página que demostró un
error del rastreador en lugar de un hecho arquitectónico cuando el rastreador reportó cero
bifurcaciones indirectas en 3M de instrucciones.extended_census.py — demostró que el censo original de bifurcaciones indirectas enumeraba
solo el 35% de la población real porque solo coincidía con formas de registro.external_decryptor_scan.py — escaneo de capacidades en módulos hermanos; la hipótesis para
la que fue construido fue posteriormente refutada por una observación dinámica de no-escritura,
y el negativo se registra con él.Mantenlos honestos: un controlador que solo confirma no vale la pena conservarlo.