Weekly digest 12

This is already number twelve of the weekly digests! It will highlight the things that happened to and around x64dbg this week.

Reflection

Over the last three weeks there has been lots of instability going on, mostly related to disassembly speed improvements. I expected around a week of instability, but unfortunately people keep finding issues and I cannot say with certainty that all bugs are gone.

The main reason for this being such an issue is that during initial development of the GUI a convenient function called GuiUpdateAllViews was introduced. This function will call the ‘force refresh’ functions of all individual views (disassembly, dump, stack, registers, sidebar, infobox, arguments, breakpoints, graph, call stack, memory map, etc.). Currently this function is no longer called in performance-critical code (such as the function responsible for updating the GUI to represent the current context) and many implicit update calls now have to be converted to explicit ones, which is a very prone to errors.

Testing all the features every time something changed is extremely time-consuming, which is why x64dbg relies on users willing to be on the bleeding edge to find issues like this. I would like to thank all of you!

Releases and versioning

As for releases and versioning, release versions imply that actual effort was put in making a specific version stable. While this might be a great model for certain projects, to me it’s an absolute joke to proudly say: “We released version 0.9 today!” and two days later dismiss someone reporting a bug with: “Always pull the latest commit and compile yourself.”

To save users from compiling x64dbg every day (which is easy, you should try it), a new snapshot is uploaded to Github immediately when a new commit is pushed to the repository. If you use a certain snapshot and everything is working fine, don’t update! If you find a bug, update to the latest snapshot and see if that solved the issue. If it didn’t, open an issue. Looking for older snapshots? Get them from SourceForge! If you see a nice new feature on this blog that you would like to try, you can copy your databases and settings in that snapshot and easily try it out.

Fixed more GUI issues

This week the following three GUI refresh issues were fixed:

Register highlighting didn’t refresh the disassembly

Using the ‘Set breakpoint on all commands’ didn’t update the breakpoint view

Browsing the disassembly history would inconsistently refresh the disassembly

Code folding was completely broken

Fixed inconsistent shortcuts

Pull request #1222 by kkthx fixed an inconsistent shortcut in the graph view.

Added content description in the memory map

Another pull request by kkthx implemented very basic content description of memory regions, currently based on the section names. If you can help improving this, please come up with ideas at issue #1212.

Fixed an issue with format delimiters

When using the string formatting functionality, the logging of {4:[esp+4]} would fail, this now works as expected.

Yet another pull request by kkthx allows you to add labels/comments directly from the graph view!

Add shortcut for copy RVA

The user ecx86 added the option to bind a hotkey to the ‘Copy RVA’ action in pull request #1232.

When using the comment list it usually doesn’t make much sense to list automatic comments (usually generated by plugins). This has now been changed and they will not be listed per default.

The (currently undocumented) CB_ADDRINFO plugin callback allows plugins to insert dynamically generated comments. This would allow a plugin to show context-relevant information directly in the comments.

Added more plugin templates

The PluginTemplate and ScriptDllTemplate are now extended with more variations to allow you to be more productive depending on your need.

Final words

That has been about it for this week again. If you have any questions, contact us on Telegram, Gitter or IRC. If you want to see the changes in more detail, check the commit log.

You can always get the latest release of x64dbg here. If you are interested in contributing, check out this page.

Finally, if someone is interested in hiring me to work on x64dbg more, please contact me!