Dynamorio
Sobre Dynamorio
O Dynamorio é um sistema de manipulação de código de tempo de execução que suporta transformações de código em qualquer parte de um programa, enquanto ele é executado. O Dynamorio exporta uma interface para a criação de ferramentas dinâmicas para uma ampla variedade de usos: análise de programas e compreensão, criação de perfil, instrumentação, otimização, tradução etc. Ao contrário de muitos sistemas de ferramentas dinâmicas, o Dynamorio não se limita à inserção de chamadas de destaque/trampolimes e permite modificações de arbitrários para instruções de um poderoso IA-32/amd64. A Dynamorio fornece manipulação eficiente, transparente e abrangente de aplicativos não modificados em execução em sistemas operacionais de estoque (Windows, Linux ou Android) e commodity IA-32, AMD64, ARM e AARCH64 Hardware. O suporte a Mac OSX está em andamento.
Ferramentas baseadas em Dynamorio existentes
Dynamorio é a base para algumas ferramentas externas conhecidas:
- O emulador de instrução do braço (Armie)
- Winafl, a ferramenta Windows Fuzzing, como um mecanismo de cobertura de instrumentação e código
- O perfilador de grão fino para o ARM drcctprof
- A estrutura portátil e eficiente para os perfiladores de valor de granulação fina vclinic
- A estrutura de sinalizador baseada em amostragem GWPSAN
As ferramentas construídas no Dynamorio e disponíveis no pacote de liberação incluem:
- A ferramenta de depuração da memória Dr. Memory
- A estrutura de rastreamento e análise drMemtrace com várias ferramentas que operam em online (com suporte de múltiplos processos) e de instrução offline e rastreamentos de endereço de memória:
- O simulador de cache drcachesim
- Simulação TLB
- Distância da reutilização
- Reutilizar tempo
- Mix de opcode
- Função Rastreamento de chamadas
- O emulador de processador legado drcpusim
- A ferramenta "Strace for Windows" drstrace
- A ferramenta de cobertura de código DRCOV
- A ferramenta de rastreamento da biblioteca drltrace
- A ferramenta de rastreamento de endereço de memória Memtrace (os traços offline do DRMEMTRACE são mais rápidos com mais infraestrutura circundante, mas esse é um ponto de partida mais simples para rastreamento de endereço de memória personalizado)
- A ferramenta de rastreamento do valor da memória memval
- A ferramenta de rastreamento de instruções Instrace (os traços offline do DRMEMTRACE são mais rápidos com mais infraestrutura circundante, mas este é um ponto de partida mais simples para rastreamento de instruções personalizado)
- A ferramenta básica de rastreamento de blocos bbbuf
- A ferramenta de contagem de instruções inscont
- A ferramenta de teste dinâmica do Fuzz Dr. Fuzz
- A ferramenta de desmontagem drdisas
- E mais, incluindo contagens de código de opções, instrumentação de ramificação, etc.: Veja amostras de API
Construindo suas próprias ferramentas personalizadas
O poderoso API do Dynamorio abstrair os detalhes da infraestrutura subjacente e permite que o construtor de ferramentas se concentre na análise ou modificação do fluxo de código de tempo de execução do aplicativo. A documentação da API está incluída no pacote de liberação e também pode ser navegada online. Os slides de nossos tutoriais anteriores também estão disponíveis.
Download de Dynamorio
O Dynamorio está disponível gratuitamente como um pacote binário para Windows e Linux. O código -fonte da Dynamorio está disponível principalmente sob uma licença BSD.
Obtendo ajuda
Use a lista de discussão para fazer perguntas.
Para relatar um bug, use o rastreador de problemas.
Veja também a página inicial do Dynamorio: http://dynamorio.org/