
Lucid es un complemento IDA Pro orientado al desarrollador para explorar el microcódigo Hex-Rays. Fue diseñado para proporcionar una experiencia interactiva perfecta e interactiva para estudiar transformaciones de microcodos en la tubería de descompiladores.
Este complemento solo está etiquetado como un recurso prototipo y código para la comunidad. Tenga en cuenta que es una ayuda para el desarrollo, no una herramienta de ingeniería inversa de propósito general.
Un agradecimiento especial a GenMC / @Pat0is et al. para la inspiración.
Lucid es un complemento Python 2/3 de plataforma cruzada (Windows, MacOS, Linux). Se necesitan cero dependencias de terceros, lo que hace que el código sea portátil y fácil de instalar.
Desde la consola Python de su desmontaje, ejecute el siguiente comando para encontrar su directorio de complementos:
os.path.join(idaapi.get_user_idadir(), "plugins") Copie el contenido de la carpeta /plugins/ de este repositorio al directorio listado.
Reinicie su desmontador.
Este complemento solo es compatible con IDA 7.5 y más nuevo.
Lucid se cargará automáticamente para cualquier arquitectura con un descompilador de rayos hexagonales presentes. Simplemente haga clic derecho en cualquier lugar de una ventana de pseudocódigo y seleccione View microcode para abrir el Explorador de microcódigos Lucid.

Por defecto, el Explorador de Microcode se sincronizará con la ventana Pseudocode de rayos hexagonales activos.
Lucid hace que sea fácil rastrear microinstrucciones a través de toda la tubería del descompilador. Simplemente seleccione una microinstrucción y desplácese (o haga clic ... si debe) a través de la lista de capa de madurez de microcódigo.

Observe cómo el Explorer se mantiene enfocado en sus instrucciones seleccionadas, mientras que el paisaje de microcódigo circundante se derrite. Es básicamente mágico.
El rastreo del cursor puede funcionar a nivel de sub-operando / subestrucción. Colocar su cursor en diferentes partes de la misma microinstrucción puede rastrear subcomponentes a sus respectivos orígenes.

Si las instrucciones en la dirección trazada se optimizan, Lucid intentará mantener su cursor en el mismo contexto aproximado. Cambiará el color del cursor de verde a rojo para indicar la pérdida de precisión.
A medida que el microcódigo de rayos HEX aumenta en la madurez, la tubería de descompilación comienza a anidar el microcódigo como subestrucciones y suboperandos que forman estructuras basadas en árboles.

Puede ver estos árboles individuales haciendo clic derecho en una instrucción y seleccionando View subtree .
Como esta es la versión inicial, probablemente habrá una serie de pequeñas peculiaridades y errores. Aquí hay algunos problemas conocidos en el momento del lanzamiento:
Si encuentra choques o mal comportamiento, presente un problema.
El tiempo y la motivación permiten, el trabajo futuro puede incluir:
Agradezco contribuciones externas, problemas y solicitudes de funciones. Haga cualquier solicitud de extracción a la rama develop de este repositorio si desea que se consideren para una versión futura.