
Lucid是面向开发人员的IDA Pro插件,用于探索十六进制射线微码。它旨在提供一种无缝的,交互式的体验,用于研究分解器管道中的微码转换。
该插件仅标记为社区的原型和代码资源。请注意,这是一种发展援助,而不是通用逆向工程工具。
特别感谢genmc / @pat0is等。为了灵感。
Lucid是一个跨平台(Windows,MacOS,Linux)Python 2/3插件。它需要零第三方依赖性,使代码既便携又易于安装。
从拆卸器的Python控制台中,运行以下命令以找到其插件目录:
os.path.join(idaapi.get_user_idadir(), "plugins")将此存储库/plugins/文件夹的内容复制到列出的目录。
重新启动您的拆卸器。
此插件仅支持IDA 7.5和更新的插件。
Lucid将自动加载任何具有十六进制射线透明剂的体系结构。只需右键单击伪代码窗口中的任何位置,然后选择View microcode以打开Lucid Microcode Explorer。

默认情况下,Microcode Explorer将与活动的十六进制射线伪代码窗口同步。
Lucid毫不费力地通过整个反编译器管道追踪微型结构。只需选择一个微观结构,然后通过Microcode成熟层列表滚动(或单击...(如果需要))。

观察探险家一直专注于您选择的指令,而周围的微型景观则融化。这基本上是魔术。
光标跟踪可以在子手术 /子指导级别上运行。将光标放置在同一微型结构的不同部分上可以追溯到各自的起源。

如果在跟踪地址上的说明被优化,Lucid将尝试将光标保持在相同的上下文中。它将将光标的颜色从绿色变为红色,以表明精确度的丧失。
随着十六进制射线微码的成熟度增加,分解管道开始嵌套微码,作为构成基于树的结构的子指导和子手术。

您可以通过右键单击指令并选择View subtree来查看这些单独的树。
由于这是最初的版本,因此可能会有许多小怪癖和错误。以下是发布时的一些已知问题:
如果您遇到任何崩溃或不良行为,请提出问题。
时间和动机允许,未来的工作可能包括:
我欢迎外部贡献,问题和功能请求。如果您希望将其考虑以将来发布,请向该存储库的develop分支提出任何拉动请求。