Thursday, February 13, 2014

Hopper Disassembler 3.0

I highly recommend Hopper. Vincent Bénony:

The user interface has been greatly enhanced thanks to the new inspector panel, which made its appearance on the right side of the main window. This panel will gives you tons of contextual informations on the area you are exploring. From there, you’ll be able to set comments, change the appearance of the operands of an instruction, see the list of references to and from an instruction, and so on…

A great new feature is the new tag system. You can now create arbitrary tags, and put them either on an address, a basic block of a procedure, or on the whole procedure. To illustrate its benefits, Hopper now automatically creates a set of tags when it parses an executable. For instance, it will create an entry point tag on each addresses that will be called by the system during the loading process of the binary (the main entry point itself, but also all the addresses declared in the various MOD_INIT/MOD_TERM sections), and also tags each implementation of each methods of the Objective-C classes! It makes it really convenient to navigate through the methods of a program written in Objective-C! You can now also give colors to addresses, which is very convenient to quickly visualize the code!

But:

I really appreciate the fact that the store allowed me to distribute a program and rapidly gains visibility, but now, it became very difficult to distribute a program like Hopper on the MAS. There are too many restrictions, the main one being the sandboxing mechanism, obviously…

And what about the Apple tax… When one buys a copy of Hopper on the MAS, I give approximately 40 to 45% of the price to Apple (the 30% are on the price without VAT).

This is why I will not distribute Hopper Disassembler v3 on the Mac AppStore at the beginning. If too many users feels the need to see Hopper distributed on the MAS, I’ll reconsider my decision.

Offering upgrade pricing to Mac App Store purchasers of the old version is a nice gesture. However, it’s not clear to me how this is different from what the Omni Group was prevented from doing.

6 Comments RSS · Twitter

Omni continued offering software on the MAS. There’s nothing Apple can do about existing purchasers; the receipt’s already there on the hard drive.

Are there any articles going through in practical terms where this would be useful and how to use it to solve a real-world problem? It looks fantastic, I'm just trying to figure out its practical value to people not trying to see key algorithms or the like.

@Nicholas Right. The problem would be if he ever wanted to sell it in the MAS again, which he says he’s considering. Otherwise, it would be a brilliant move to convert all the customers to direct sales, with proper upgrade treatment, and then reactivate MAS later to pick up new customers.

@Clark I’m not aware of any. I find it useful for debugging and for reverse-engineering the system frameworks. Not really to find key algorithms but rather to see why some API isn’t behaving as expected. There are often holes in the documentation, and we don’t have the source to Cocoa, so this is the next best thing.

Clark: The Tales from the Crash Mines series, starting with https://www.mikeash.com/pyblog/tales-from-the-crash-mines-issue-1.html, has promised to discuss use of Hopper in future issues for figuring out crashing issues (particularly if they’re in Apple’s frameworks, etc.)

Avi Drissman recently used Hopper to bypass an authentication check in Quicken so he could import his investment data: http://avi.drissman.com/2014/02/lobotomizing-quicken-2007.html

The upgrade issues asides, wow! What's old is new again - very reminiscent of Steve Jasik's MacNosey decompiler (http://www.jasik.com) from the days of yore!

[...] Avi Drissman (via Nicholas Riley): [...]

Leave a Comment