lucid icon indicating copy to clipboard operation
lucid copied to clipboard

[Lucid Reloaded]: New features, QoL updates, fixes + enhancements

Open Fireboyd78 opened this issue 5 months ago • 10 comments

Originally this started out as a personal side project of mine that I didn't expect to do much work on. But just like that, before you know it.. I ended up rewriting a majority of Lucid and majorly improved performance! Lucid is one of my most-used plugins in IDA, so this is my way of showing appreciation to @gaasedelen for his amazing work :)

Considering I never planned on doing this much work, there may be some changes that are not listed below.

Changelist Pt. I

  • Bumped version number up to 0.2

  • Added my username to the list of authors when Lucid is loaded

  • Cleaned up LOTS of code, but there's still plenty of work to be done

  • Modernized some of the Python to 3.x (TODO: type hinting!!!)

  • Fixed quite a few bugs within the code that would cause exceptions, especially under different platforms (like MIPS)

    • Resolves: #3
  • Added 'Developer mode' checkbox for showing additional information of instructions.

  • Added 'Refresh view' button to force a refresh of the microcode viewer.

  • Added ability to navigate the lines within the explorer using the keyboard :)

  • Added some more block flags to display + changed formatting up a bit

  • Fixed the microcode view not being updated when the pseudocode is refreshed

  • Sub-instruction graph is now fully synchronized with the microcode view, and will update in realtime

  • Optimized generation of TokenCell objects and their derivatives

  • Created specialized helper classes for iterating through tokens

  • Created specialized helper class for registering/notifying callbacks

  • Miscellaneous QoL improvements that may not be listed here

  • Probably introduced a random bug or two (or five) somewhere.. only one way to find out! ;)

Changelist Pt. II

  • No longer hangs when loading into very large functions

  • Different maturity levels will now be loaded when the user requests them

  • Added a queue system for handling pending maturity level changes

  • [X] ~~TODO: Fix cursor synchronization between maturity levels - it was fully dependent on expecting every maturity level to be available at once...~~ [resolved: 7d624bae0]

Changelist Pt. III

  • Fixed cursor synchronization between maturity levels 💯

  • Fixed support for reloading the plugin while IDA is open 👌

  • Bumped version number up to 0.2.3

  • Added 'unload' methods to classes where needed in order for them to unregister any dependencies.

  • Added a 'hotload state' that can be retrieved and later set to restore the environment prior to reloading.

    • TODO: Delegate loading/saving to the classes + add more stuff to save/restore
  • Added some additional info to the 'recursive reload' function when the "OH NOO" condition is met 😆

  • Removed assertion preventing moves from far-away maturity levels

    • As originally stated in the comments, it wasn't strictly necessary, and the code works just fine without it 👍

Fireboyd78 avatar Jan 31 '24 02:01 Fireboyd78