A number of folks have asked me what tools and techniques I use to reverse engineer Cocoa executables. I thought it would be worth taking some time out from documenting undocumented APIs to show you how easy it is to do the same thing for yourself.
My number-one favorite tool is class-dump, a command-line utility written …

@Adrian

WTF CARES!!

Reverse engineering OS/X? What the hell for? As a software engineer, understanding the internals of Windows or Linux or Solaris kernels.. yes. Makes sense. But OS/X!? Have. You. Lost. Your. Friggen. Mind? You desperately need to either install an online FPS/RPG, or get a GF, to help while away your spare time.

Mine is the one with the spare o/s flame thrower fuel cells in the pockets.

@ braindead

No, Robert, Intel are still using the exact same instruction set. Didn't you know? They do it on purpose to ensure something called "backward compatibility". As as result, it's something of an industry standard these days.

Granted, it's the worst instruction set ever designed, and a massive chunk of every x86 CPU is dedicated just to decoding it. But are we really still bitching about it in 2009?!

You're not even bitching about the right things! You can write code with EIGHT REGISTERS but you have trouble doing a call-and-pop?

Re: *cough* Excuse me?

I can't speak for Apple, but Microsoft ship the tools to disassemble code as part of the OS, and provide a GUI interface to them as part of the compiler product, supported by symbol files downloadable over the internet from MS servers. These *tools* are the bread and butter for programmers at this level, and Microsoft understand that if you aren't nice to your developers then they don't write apps for your platform.

As for the legality, reverse engineering was (perhaps still is) specifically permitted under EU law for the purposes of producing a product that works with another (rather than competing with it). The DMCA is not the only law in town, and most other laws are considerably less brain-dead.

RE: *cough* Excuse me?

Ken Hagan said:

"As for the legality, reverse engineering was (perhaps still is) specifically permitted under EU law for the purposes of producing a product that works with another (rather than competing with it). The DMCA is not the only law in town, and most other laws are considerably less brain-dead."

Absolutely. The main reason I ever reverse engineer Apple stuff is for the purposes of interoperability. And as other have pointed out, the DCMA doesn't apply in dear old Blighty....