Hopper Disassembler allows you to disassemble, decompile and debug your applications. Hopper is perfectly adapted to the environment. The macOS version makes full use of the Cocoa framework, and the Linux version makes use of Qt 5.
With the Hopper SDK, you’ll be able to extend Hopper’s features, and even write your own file format and CPU support.
Hopper analyzes function’s prologues to extract procedural information such as basic blocks and local variables.
Once a procedure has been detected, Hopper displays a graphical representation of the control flow graph. You can even export a PDF.
Hopper displays the code using different representations. Take a look at the assembly, the CFG, and the pseudo-code of a procedure, all at the same time.
Most of the Hopper features can be invoked from Python scripts, giving you the ability to transform a binary in any way you want.
Hopper can use LLDB or GDB, which lets you debug and analyze the binary in a dynamic way (Intel CPU only).
Even if Hopper can disassemble any kind of Intel executable, it does not forget its main platform. Hopper is specialized in retrieving Objective-C information in the files you analyze, like selectors, strings and messages sent.
Based on an advanced understanding of the executable Hopper can present a pseudo-code representation of the procedures found in an executable.