It has been a while since the last time I’ve posted anything on this blog. No, the project is not dead, far from that! And yes, I’ve been secretly working on the next major update: Hopper v4 🙂

I can’t wait to talk about the new features, so, here is a short list:

Display Modes

Starting with Hopper v4, there is no floating windows anymore: now there is this Display Mode concept, which allows you to look at the content of the file using different kind of representation.

For instance, you can choose the regular ASM mode, which displays each line of the file, one after the other, or the more structured CFG mode, which displays the control flow graph of the currently selected method. There is also a mode for the pseudo-code, and another for the hexadecimal editor.

And because it is possible to split the view, it means that you can look at multiple distinct views of the disassembled file at the same time, side by side.

The views can be either totally independent, or synced so that when you navigate to a new place in one view, the other views are automatically updated to display the same portion of the file.

Interactive Control Flow Graph

Hopper v4 let you edit the document directly from the CFG view! You can add labels, rename variables, edit an instruction, etc.

The comments are now visible in this mode, which is something that has been frequently requested, and of course, you can edit them from there. It is possible to change the aspect of a given basic block by changing its color, or even create groups from distinct blocks.

In this mode, a mini map appears in the right-hand panel to help you see where you currently are in the method.

Tabs

The main window is gaining tabs: this is a really convenient way to handle multiple window configurations, and quickly jump from one to the other.

You can create as many tabs as you want, move them, and even rename them.

Faster Decompiler

The new decompiler is really fast now! In most circumstances, the decompilation process is almost instantaneous. This is a great addition to Hopper, because you can keep an eye on the decompilation of all the functions you navigate to.

Rename Register

Talking about registers, it is now possible to rename a register in the scope of a function. This is a really convenient feature when you know that a given register is always used for a specific purpose in the whole function.

Local Labels

Hopper v4 introduces local labels. You can create labels which exist only in the scope of a given function, and these labels will not show up in the global list on the right. So, it is possible to provide the same name in two different functions with no problem.

Smarter Contextual Menu

In Hopper v3, some actions were not always clear, and especially the behavior of the renaming feature. Now, when you right-click on something, Hopper lets you choose the action from the contextual menu.

For instance, in that case, Hopper asks you if you want to rename the address where the cursor currently is, or rename the address of the Jcc destination. Note that you can also rename a bookmark from there. The bookmark list has been added to the left-hand side panel.

Swift Demangler

Hopper now features a complete Swift name demangler. No more cryptic names in files written in Swift.

Semantic Coloration

In order to make ASM easier to read, Hopper gives different colors to the objects in the disassembly view, according to its analysis. For instance, stack variables have a different color from numbers, or registers. Of course, all these colors are customizable.

Interactive Python Interpreter

With a simple shortcut, you can jump to the Python interpreter, at the bottom of the window. It allows you to evaluate expression, and directly interact with the document.

Improved Structures, and Enumerated Types

You can now define your own enum type! For instance, this feature is used internally in the MachO file loader, in order to show the various load commands, and the Objective-C metadata in a convenient way.

Structs have been improved too, and are now displayed in a more readable way. You can even define a specific format for each field of the struct.

Hexadecimal Regular Expressions

Another handy feature is coming with this release: you’ll be able to search for regular expressions. Almost like grep, and similar tools, you’ll be able to search for patterns in a file. For instance, this expression search for all NULL-terminated strings made of digits, and starting with character “1” .

AArch64 Decompiler

At last, Hopper v4 starts to decompile AArch64 functions! The support is not complete yet, but it really helps in most situations.

Call Graph

Hopper v4 analyses procedures, and collect all the methods called. He is also capable of detecting some indirect calls, like Objective-C messages.

Theme Manager

Color themes can be saved! If you are using Hopper on multiple computers, you can easily share your settings.

Of course, these are only the most visible improvements to the application, but many other areas have been improved.

When? Where?? How???

At the moment, there is no precise ETA, but Hopper v4 will be released before the end of the year, hopefully before the end of November.

And now, the big news: Hopper v4 will be a free update for the owners of a v3 license.

By doing this, I would like to thank all the people who trusted me on this project from the beginning. Your support made it possible!

Unfortunately, the Linux version, and the macOS version will not be released at the same time; I had to rewrite many parts of the UI for the new version, and I wanted to focus on one platform at a time. Now that I’ve something great on macOS, the Linux port can start… But it should not take so much time, as the new core already works on Linux… So, the Linux version is NOT discontinued, just a little bit delayed…

During the last weeks of its development, the price will remain the same, and any license purchased before the final release will allow you to upgrade to the new version for free… Once the v4 is released, its price will be reevaluated.

Also, please note that the upgrade program from v2 to v3 will end once the v4 will be released. If you are still using a very old version of Hopper, you can still upgrade to the v3 at a discounted price.