← Últimos artigos
💻 computer science

Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution

Este artigo propõe uma técnica de análise baseada em execução simbólica e segura que combina pré-carregamento especulativo de bibliotecas com ganchos personalizados para recuperar Grafos de Fluxo de Controle de código carregado dinamicamente, alcançando melhorias significativas na recuperação de nós e arestas em relação à análise estática, ao mesmo tempo em que mantém 100% de precisão e revocação na detecção de bibliotecas.

Autores originais: Oleksandr Mostovyi

Publicado 2026-05-29
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Oleksandr Mostovyi

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está tentando entender como uma máquina complexa funciona observando seus projetos. No mundo do software de computador, esses projetos são chamados de Gráficos de Fluxo de Controle (CFGs). Eles mapeiam cada caminho possível que um programa pode percorrer, mostrando para onde o código vai em seguida.

No entanto, o software moderno (e programas maliciosos como malware) aprendeu um truque para esconder seus projetos. Eles usam uma técnica chamada carregamento dinâmico. Em vez de ter todas as suas partes construídas na máquina principal desde o início, eles mantêm algumas partes em uma caixa trancada e só abrem a caixa e montam as partes enquanto a máquina está em execução.

O Problema: As Partes Invisíveis

As ferramentas tradicionais de análise de software são como arquitetos estáticos. Eles olham para os projetos sobre a mesa e dizem: "Aqui está o caminho". Mas se a máquina puxa uma parte escondida de uma caixa enquanto está em execução, o arquiteto estático não vê nada. Eles veem um espaço em branco onde deveria haver uma porta, então não conseguem traçar o caminho através dela.

Isso é um enorme problema para a segurança. Se você não consegue ver os caminhos ocultos, não consegue dizer se a máquina está segura ou se é uma armadilha.

A Solução: O Detetive "Especulativo"

O autor deste artigo, O. S. Mostovyi, construiu um novo tipo de ferramenta de detetive. Em vez de apenas olhar para os projetos, essa ferramenta age como um simulador que viaja no tempo.

Veja como funciona, usando uma analogia simples:

  1. A Simulação (Execução Simbólica): Imagine que você tem um robô que pode executar o software sem realmente ligá-lo de verdade. Ele executa o código em um mundo de "e se". Ele não executa as partes perigosas; apenas pensa nelas.
  2. A Arquitetura de Dois Níveis: A ferramenta tem dois sentidos especiais trabalhando juntos:
    • Nível 1 (O Bibliotecário): Esta parte observa o software solicitando novas partes. Quando o software diz: "Preciso de uma biblioteca da rede" ou "Preciso de um arquivo de um local de memória oculto", o Bibliotecário intercepta a solicitação. Mesmo que o software diga que o nome do arquivo está criptografado ou embaralhado, a ferramenta usa matemática para descobrir qual é o arquivo real. Em seguida, ela "especulativamente" carrega esse arquivo na simulação para que o robô possa vê-lo.
    • Nível 2 (O Agente de Trânsito): Esta parte observa as estradas por onde o robô viaja. Quando o robô chega a um cruzamento onde a direção depende de uma variável oculta (como um endereço secreto), o Agente de Trânsito verifica os cenários de "e se" para ver para onde essa estrada realmente leva.

Como Lida com Truques Difíceis

O artigo explica que agentes mal-intencionados usam muitas maneiras de esconder seu processo de carregamento. A ferramenta foi projetada para pegá-los a todos:

  • Execução sem Arquivos: Alguns programas criam arquivos que não existem no disco rígido, vivendo apenas na RAM. A ferramenta vê esses arquivos invisíveis.
  • Carregamento pela Rede: Alguns programas baixam seu código da internet enquanto estão em execução. A ferramenta simula esse download para ver o que chega.
  • Nomes Criptografados: Se o programa diz "Carregar arquivo [código criptografado]", a ferramenta usa um resolvedor matemático para quebrar o código e encontrar o nome real do arquivo.

Os Resultados: Preenchendo o Mapa Faltante

Para testar isso, o autor criou 16 "armadilhas" diferentes (benchmarks) que usavam várias técnicas de ocultação, desde truques simples até criptografia complexa e multiestágio.

Os resultados foram muito claros:

  • Completude: A ferramenta encontrou 29,8% mais caminhos (nós) e 26,5% mais conexões (arestas) do que as ferramentas estáticas tradicionais. Ela preencheu os espaços em branco no mapa.
  • Precisão: Foi 100% precisa. Toda vez que disse ter encontrado uma biblioteca oculta, estava certa. Não houve nenhum falso alarme.
  • Segurança: Como usou simulação (execução simbólica) em vez de executar realmente o código perigoso, pôde analisar esses programas complicados com segurança, sem o risco de o malware escapar ou causar danos.

As Limitações

O autor é honesto sobre o que a ferramenta não consegue fazer ainda:

  • É um Detetive, Não um Mágico: Pode encontrar as portas escondidas e traçar os caminhos, mas não "desfaz" automaticamente ofuscações complexas (embaralhamento) para tornar o código fácil de ler. Isso ainda é um problema difícil.
  • Limitações de Plataforma: Atualmente funciona bem para sistemas Linux (especificamente arquivos ELF) em certos chips de computador, mas não para Windows ou outros sistemas operacionais ainda.
  • Fluxos Ocultos: Rastreia dados que se movem explicitamente, mas às vezes perde dados que se movem de maneiras sutis e indiretas (como através de funções matemáticas complexas).

Resumo

Em resumo, este artigo apresenta um novo método para mapear software que esconde suas partes até que seja executado. Ao combinar um simulador de "e se" com um sistema inteligente que intercepta e resolve solicitações ocultas de arquivos, a ferramenta pode desenhar um mapa completo do comportamento do programa, revelando caminhos que anteriormente eram invisíveis para analistas de segurança. Testou com sucesso isso em 16 cenários diferentes, provando que consegue encontrar bibliotecas ocultas com precisão perfeita.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →