DynamoRIO
Graphical Application Framework

The drgui DynamoRIO Extension provides a DynamoRIO independent graphical application framework that can be used to provide a front-end for a DynamoRIO Extension or tool.

Plugins must use Qt 5 to maintain compatibility with drgui because Qt 5 is not backwards compatible.

Setup

To use drgui with your plugin simply include this line in your plugin's CMakeLists.txt file:

use_DynamoRIO_extension(clientname drgui)

That will automatically set up the include path and library dependence.

Your plugin should be built with cmake in order to maintain compatibility with the rest of DynamoRIO. For details on this, see the Qt documentation here and reference ext/drgui/CmakeLists.txt for example usage.

Plugin Layout

The recommended method of turning a Qt application into a drgui plugin is to create a factory which implements drgui_tool_interface_t.

If your plugin requires persistent preferences then implementing drgui_options_interface_t will create a section for the plugin in drgui 's preferences dialog. It is up to the author of the plugin to decide how to store the preferences. However, the recommended method is to use QSettings.

Distribution

Plugins

drgui provides command line arguments that can be used to auto-load plugins. This feature can also be used to pass arguments to the plugin that is being automatically loaded.

drgui -t <tool_name> [options]

The -t option can be passed either the name of the plugin, or the location of the plugin in the file system. Any further arguments are passed to the plugin when it is loaded.

Libraries

When distributing drgui and any plugins be aware of Qt's LGPL license restrictions. Namely, restrictions concerning static linking to the Qt libraries.

If static linking is not an option then the required Qt libraries should be packaged with the application as shared libraries. Otherwise, installing Qt 5 will be a requirement for a user.

Relevant documentation and examples can be found here and here