
Pequeno e fofo plugin de emulador para IDA baseado no unicorn.
uEmu é um plugin de emulador pequeno e bonitinho para IDA baseado no motor Unicorn.
Suporta as seguintes arquiteturas prontas para uso: x86, x64, ARM, ARM64, MIPS, MIPS64

MSR S3_x, X0 para ARM64)idapyswitchbrew install unicorn para instalar os binários do Unicornpip install unicorn para instalar os bindings Python do UnicornFile / Script file... ou ALT+F7 no IDA para carregar o uEmu.pyOpcionalmente, o uEmu pode ser carregado automaticamente como um plugin do IDA. Nesse caso, coloque-o na pasta [IDA]/Plugins e altere USE_AS_SCRIPT para False dentro do uEmu.py

ALT/OPTION para especificar um número)Inicie a emulação a partir do cursor. É necessário fornecer o contexto inicial da CPU primeiro (veja Atualizar Contexto da CPU). Depois disso, todos os segmentos do banco de dados do IDA serão mapeados para o emulador (dados inicializados também serão copiados).
Execute o código até que um breakpoint de código ou memória seja alcançado ou haja um evento que exija ação do usuário.
Execute uma única instrução. Segure ALT/OPTION para especificar o número de passos a executar.

Quando a emulação estiver em andamento, este comando pode ser usado para interromper a execução.
Redefine a instância do emulador e desmapeia todas as regiões de memória.
Você pode usar os breakpoints do IDA para indicar locais onde a emulação deve ser interrompida. Isso inclui breakpoints de código e memória. Geralmente usado junto com o comando Run.
Quando o emulador precisa acessar memória que ainda não foi mapeada, o plugin mostrará o seguinte diálogo.


Quando o emulador encontra uma instrução desconhecida, é possível ignorá-la e restaurar o contexto da CPU manualmente.

Apenas um painel para controlar a execução.

Contexto atual da CPU.

Toda vez que a emulação parar, os registradores alterados serão destacados. Os registradores podem ser exibidos em 1, 2 ou 3 colunas através do menu popup.
É possível atualizar o contexto da CPU através do menu popup (veja abaixo).
Contexto estendido atual da CPU.

Toda vez que a emulação parar, os registradores alterados serão destacados. Os registradores podem ser exibidos em 1, 2 ou 3 colunas através do menu popup.
É possível atualizar o contexto da CPU através do menu popup (veja abaixo).
Use esta visualização para observar regiões de memória para um endereço e tamanho especificados. Um comentário será exibido no título por conveniência.

Toda vez que a emulação parar, os blocos de memória alterados serão destacados.

Os valores dos registradores podem ser alterados individualmente ou todos de uma vez com um arquivo JSON através do menu popup. O contexto atual também pode ser salvo em um arquivo JSON para uso futuro.



Além de todas as funções listadas no Menu Popup, existem alguns novos comandos.

Exibe todas as regiões mapeadas. Use o menu popup para exibir a memória de uma região específica ou despejá-la em um arquivo.

Este comando tenta sincronizar os segmentos do IDA com a memória mapeada, criando novos mapeamentos ou mesclando com os existentes, se possível. Isso ajuda a adicionar novos segmentos do IDA ao emulador em tempo de execução sem reiniciar o emulador.
Carregar estado do uEmu a partir de um arquivo.
Salvar estado do uEmu em um arquivo. Observe que apenas os registradores definidos no plugin são salvos.