
Kit de ferramentas de análise estática e recuperação de estrutura para imagens PE protegidas por ACE .qvm0
Estes são os drivers de análise usados para produzir as medições citadas no README e nas notas de caso. Eles são orientados por argumentos e reutilizáveis: cada um recebe o caminho do PE (e os caminhos de saída) na linha de comando.
Execute a partir da raiz do repositório, por exemplo:
python scripts/extended_census.py <pe> <dynamic_edges.tsv>
| script | propósito |
|---|---|
verify_target_decodability.py | verificação da densidade de decodificação de alvos nativos->VM contra uma população de controle |
verify_dynamic_coverage.py | interseção de conjuntos em nível de página provando se o código executado se sobrepõe a sites de ramificação |
verify_dynamic_edges.py | referência cruzada e validação de limites entre conjuntos de arestas dinâmicas e estáticas |
opaque_coverage.py | quanto do conjunto de sites estaticamente opacos a passagem dinâmica alcançou |
extended_census.py | reconciliar o censo completo de ramificações indiretas com os sites observados |
external_decryptor_scan.py | escanear módulos irmãos em busca de capacidade de proteção/mapeamento/escrita de página |
task1_slice_all.py | slice estático completo: resolução de idiomas e depois slicing reverso, com saída de arestas |
task1b_dynamic_codelike.py | recuperação dinâmica de arestas restrita a entradas de VM semelhantes a código |
task2_realctx.py | emular a partir de contextos de chamada reais; recuperar o layout de slots do frame da pilha |
task4_patch.py | patch de desofuscação com preservação de comprimento mais verificação de contenção |
Vários deles existem para falsificar uma afirmação, e é por isso que são mantidos:
verify_target_decodability.py — compara uma métrica de densidade de decodificação contra uma
população de controle. É o script que mostrou que uma verificação pontual de três alvos
não era representativa.verify_dynamic_coverage.py — a interseção de conjuntos em nível de página que provou um
bug do tracer em vez de um fato arquitetural quando o tracer relatou zero
ramificações indiretas em 3M de instruções.extended_census.py — mostrou que o censo original de ramificações indiretas enumerava
apenas 35% da população real porque correspondia apenas a formas de registro.external_decryptor_scan.py — varredura de capacidade em módulos irmãos; a
hipótese para a qual foi construído foi subsequentemente refutada por uma observação
dinâmica de não-escrita, e o negativo é registrado com ele.Mantenha-os honestos: um driver que apenas confirma não vale a pena manter.