
Lucid est un plugin IDA Pro axé sur les développeurs pour explorer le microcode des rayons hexagonaux. Il a été conçu pour fournir une expérience interactive sans couture pour étudier les transformations de microcodes dans le pipeline de décompilateur.
Ce plugin est étiqueté uniquement comme un prototype et une ressource de code pour la communauté. Veuillez noter qu'il s'agit d'une aide au développement, pas d'un outil d'ingénierie inverse à usage général.
Un merci spécial à GenMC / @ Pat0is et al. pour l'inspiration.
Lucid est un plugin Python 2/3 Python 2/3. Il faut zéro dépendances tierces, ce qui rend le code à la fois portable et facile à installer.
Depuis la console Python de votre désassembleur, exécutez la commande suivante pour trouver son répertoire de plugin:
os.path.join(idaapi.get_user_idadir(), "plugins") Copiez le contenu du dossier /plugins/ dossier de ce référentiel dans le répertoire répertorié.
Redémarrez votre démontbler.
Ce plugin n'est pris en charge que pour IDA 7.5 et plus récent.
Lucid se chargera automatiquement pour toute architecture avec un décompilateur de rayons hexadécimaux présents. Cliquez simplement avec le bouton droit n'importe où dans une fenêtre pseudocode et sélectionnez View microcode pour ouvrir l'explorateur Microcode Lucid.

Par défaut, l'Explorateur Microcode se synchronisera avec la fenêtre Pseudocode des rayons hexagonaux actifs.
Lucid rend sans effort la trace de micro-instructions à travers l'ensemble du pipeline de décompilateur. Sélectionnez simplement une micro-instruction et faites défiler (ou cliquez ... si vous devez) via la liste des calques de maturité des microcodes.

Regardez l'explorateur reste concentré sur vos instructions sélectionnées, tandis que le paysage du microcode environnant fond. C'est fondamentalement magique.
Le traçage du curseur peut fonctionner à un niveau de sous-opérande / sous-instruction. Placer votre curseur sur différentes parties de la même micro-instruction peut retracer les sous-composants à leurs origines respectives.

Si les instructions à l'adresse tracée sont optimisées, Lucid tentera de garder votre curseur dans le même contexte approximatif. Il changera la couleur du curseur du vert au rouge pour indiquer la perte de précision.
À mesure que le microcode des rayons hexadécimaux augmente de la maturité, le pipeline de décompilation commence à nicher le microcode sous forme de sous-instructions et de sous-opérandes qui forment des structures à base d'arbres.

Vous pouvez afficher ces arbres individuels en cliquant avec le bouton droit sur une instruction et en sélectionnant View subtree .
Comme il s'agit de la version initiale, il y aura probablement un certain nombre de petites bizarreries et bogues. Voici quelques problèmes connus au moment de la sortie:
Si vous rencontrez des accidents ou un mauvais comportement, veuillez déposer un problème.
Le temps et la motivation permettent, les travaux futurs peuvent inclure:
Je salue les contributions, les problèmes et les demandes de fonctionnalités externes. Veuillez faire toutes les demandes de traction vers la branche develop de ce référentiel si vous souhaitez qu'ils soient considérés pour une future version.