Back

IDA 9.3 Expands and Improves Its Decompiler Lineup

IDA 9.3 Expands and Improves Its Decompiler Lineup

We know you’re always looking for broader platform coverage from the Hex-Rays decompiler, which is why we’re adding another one to the lineup: the RH850 decompiler. And of course, we haven’t stopped improving what’s already there. In this upcoming release, we’ve enhanced the analysis of Golang programs, fine-tuned value range optimization, made the new microcode viewer easier to use, and more.

RH850 Decompiler

While there's still room for further polishing, the RH850 decompiler can already handle real-world applications. For example, this assembler sequence:

Gets converted into this short code snippet:

Or this quite long function:

Gets decompiled into just one line like this:

We’re certain our users will appreciate the new decompiler.

Improvements to Golang Support

And if you were expecting more exciting news, you’re absolutely right—we have more to share. Let’s take a look at the upcoming improvements to Golang support. First, assembly-level analysis of Golang functions is now clearer, with improved recognition of standard structures:

Including the standard “string” type:

Now we do a better job of detecting and collapsing duplicate types. 

Before:

After:

Types are stored in subfolders.

Before:
 

After:

Microcode Viewer Updates

The microcode viewer has more interactivity: now it is possible to delete undesirable instructions during decompilation or add new instructions. For example, the instruction 1.9 was deleted by the user right clicking on an instruction and selecting “Delete instruction”:

This means that the rest of decompilation will be handled without it. This feature is handy for deleting junk code. The user can also add new instructions by right clicking and selecting “Insert assertion”:

Such an instruction can be used to notify the decompiler about the outcome of a complex sequence of instructions (for example, the outcome of an obfuscated code). This is a step towards making our decompilers more interactive.

 

We keep improving our decompilation engine, to produce shorter and more readable code. There are many improvements, but let us show you just one of them.

 

Before:

After:

The decompiler proved that the second condition is not necessary and removed it. Behind the scenes, this shortening was possible because of the value range optimization.

 

Another new feature is “Forbid assignment propagation”. It makes the output more readable. For example, we have a repeated expression here:

The user can ask not to propagate v19:

And the result will be:

As you can see, the repeated expression disappeared.

 

We’ve highlighted the most exciting decompiler updates here, but this is only part of the story. There’s more waiting for you once IDA 9.3 is released . Stay tuned!