Hopper Disassembler v4
Hopper Disassembler is a binary disassembler, decompiler, and debugger for 32-bit and 64-bit executables.
This tool will let you disassemble any binary you want, and provide you all the information about its content, like imported symbols, or the control flow graph! Hopper can retrieve procedural information about the disassembled code like the stack variables, and lets you name all the objects you want.
Hopper is able to transform the assembly language into a pseudo-code that is easier to understand! You can use its internal Python scripting engine to analyze binaries the way you want (this feature works only with Lion)!
Starting from version 2.0, Hopper can even use GDB to debug programs!
And, last but not least, unlike all other tools of its kind, Hopper is perfectly integrated into the OS X environment.
Hopper will surely become your favorite tool for all your binary analyses.
- edit your 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.
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.
Tabs in the Hopper’s main window
You can create as many tabs as you want, move them, and even rename them
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.
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.
- 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..