
O LUCID é um plug-in IDA Pro orientado para o desenvolvedor para explorar o microcódigo de raios hexadecimal. Ele foi projetado para fornecer uma experiência interativa e perfeita para o estudo de transformações de microcódigo no pipeline do decompilador.
Este plug -in é rotulado apenas como um protótipo e recurso de código para a comunidade. Observe que é um auxílio ao desenvolvimento, não uma ferramenta de engenharia reversa de uso geral.
Agradecimentos especiais ao GenMC / @Pat0is et al. para a inspiração.
Lucid é um plug-in 2/3 do Python 2/3. São necessárias zero dependências de terceiros, tornando o código portátil e fácil de instalar.
Do console python do seu desmontador, execute o seguinte comando para encontrar seu diretório de plug -in:
os.path.join(idaapi.get_user_idadir(), "plugins") Copie o conteúdo deste repositório /plugins/ pasta para o diretório listado.
Reinicie seu desmontador.
Este plugin é suportado apenas para IDA 7.5 e mais recente.
A LUCID carregará automaticamente para qualquer arquitetura com um descompilador de raios hexadecimal presente. Simplesmente clique com o botão direito do mouse em qualquer lugar da janela Pseudocode e selecione View microcode para abrir o Lucid Microcode Explorer.

Por padrão, o Microcode Explorer sincronizará com a janela Pseudocode de raios hexáticos ativos.
A LUCID torna fácil rastrear microinstrução através de todo o oleoduto Decompiler. Basta selecionar uma microinstrução e role (ou clique ... se precisar) através da lista de camadas de maturidade do microcódigo.

Observe enquanto o Explorer permanece focado nas instruções selecionadas, enquanto o cenário do microcódigo circundante derrete. É basicamente mágico.
O rastreamento do cursor pode operar em um nível de subestrução de sub-insegurança. Colocar seu cursor em diferentes partes da mesma microinstrução pode rastrear subcomponentes de volta às suas respectivas origens.

Se as instruções no endereço rastreado forem otimizado, a LUCID tentará manter seu cursor no mesmo contexto aproximado. Ele mudará a cor do cursor de verde para vermelho para indicar a perda de precisão.
À medida que o microcódigo dos raios Hex aumenta a maturidade, o pipeline de decompilação começa a aninhar o microcódigo como sub-instrução e suboperandos que formam estruturas baseadas em árvores.

Você pode visualizar essas árvores individuais clicando com o botão direito do mouse em uma instrução e selecionando View subtree .
Como esta é a versão inicial, provavelmente haverá várias pequenas peculiaridades e bugs. Aqui estão alguns problemas conhecidos no momento do lançamento:
Se você encontrar alguma falha ou mau comportamento, registre um problema.
Permissão de tempo e motivação, o trabalho futuro pode incluir:
Congratulo -me com contribuições externas, questões e solicitações de recursos. Faça qualquer solicitação de tração para a filial develop deste repositório, se você quiser que eles sejam considerados para uma versão futura.