Brief Tutorial on Reverse Engineering Mac OS X
rjw57 writes "There is an article on OSNews I wrote about how the guy behind Desktop Manager goes about reverse engineering APIs from Mac OS X with a brand new example not revealed anywhere else. From the article: 'I am often asked in email how I uncovered the API calls I use in Desktop Manager which are, unfortunately, undocumented. This article aims to give a little insight into the techniques I use to reverse engineer Mac OS X in order to provide extra functionality to users and extra information to third-party developers. In this article all the utilities I use are a standard part of Mac OS X's developer tools which are freely available.'"
Great example of apples practice of breaking API's leaving developers out of the loop
It's an undocumented, unsupported API; that's what the article is about. What broken APIs were you thinking of? Carbon took over most of the OS 9 ones (apart from some clearly documented exceptions).
If you had read the article you might actually have had something useful to say.
The story you linked to is about copyright infringement, not reverse engineering. It has nothing to do with TFA. Apple is not encrypting their undocumented code, so it has nothing to do with the DMCA. Reverse engineering is not necessarily banned by the DMCA; in fact, reverse engineering for interoperability is specifically exempt from it.
English is easier said than done.
Actually, Apple intentionally reserves APIs that are related to "user experience".
I doubt they will ever get around to documenting functions related to to switching "workspaces"/desktops unless Apple themselves chooses to ship a desktop switcher. Another example is putting items into the Menu Bar.
So now we find out that Apple has used - and is using - undocumented API calls.
Um, no Apple has no applications that use the virtual desktop APIs to compete unfairly with third party apps. In fact Apple has no competing application in this area at all, and two of the three applications that DO exist are open source.
Keep in mind, that once an API is documented, then Apple is committed to supporting it. If a method or function is not documented, then it can change and break your app with any release, be it a software update, a security update, etc.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
I know that it's fun to pick apart the framework code, make guesses as to what it's doing and how, and write code that exploits it in some way, but don't, don't, don't write a commercial product that depends on what you discover by this kind of spelunking, unless you are fully prepared to deal with the consequences of it breaking at any software update.
If your users call Apple because your program broke, Applecare will tell them to talk to you about it. If you ask Apple for help with an undocumented API, your request will be declined.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Keynote uses the supported OpenGL full-screen mode. There is sample code at developer.apple.com that shows how to do full-screen GL contexts.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Good point and all. But what's a menulet? Some word you just made up? They're called menu extras.
Then again, these MAC things weird me out. I need to get a new Apple when MAC announces them.
You can sort of hack together that functionality using two windows. ex:
(first window) ktrace -f less.ktrace less foo.txt
(second window) kdump -l -f less.ktrace
Only thing is that you have to run the first one first - if you run kdump first, then start ktracing the comand, ktrace will respect kdump's read lock on the file, and you won't see anything. Which means that there's that little time at the start, during which you're not seeing "live" syscalls, but catching up to the backlog...
Try reading the DMCA.
Reverse Engineering for interoperability is explicitly permitted.
iTunes, for example, and the whole brushed metal is basicly an excuse for making cool-looking apps. I like brushed metal, but apple has changed the HIG to morph around what they think looks best. There really should only be 1 window gui, aqua.
Brushed metal was originally applied to windows that simulated real world devices. iTunes=stereo. DVD Player=TV+DVD player. Later on it was applied to most of the interface and I for one am very glad. It provides better contrast with window contents. Finder windows have a default white background as do many text style documents like PDFs, Word files, etc. Most editors and terminal windows are best with white text on a black background for maximum contrast with minimal eyestrain. This means about half my windows are primarily white and half are primarily black. Now what color is halfway between white and black, does not grab the eye, and does not clash with any other color? Gee that would be only one...gray. Add a little texture and you get the brushed metal look. Apple designers probably realized why people like the brushed metal, but most people just like it because it looks good. It looks good because it is pretty much the best color you can use from a UI design perspective.
The best way to use Expose isn't with function keys but with buttons 3 and 4 on multibutton mice like Microsoft's. It really makes things a breeze. Especially drag and drop. I find the function keys much less fluid - sort of like using the keyboard equivalent for the second mouse button in OSX.
I agree but from a management point of view, If you have that many apps open that Expose doesn't give you good idea of what you're working on, you're not efficient and most probably wasting productive time.
As a user of Linux and Mac, I use both Virt Desktops and Expose (used to use VD on the Mac before 10.3). Not trying to be a flamer here but there is no way one person can be productive with 4x (or even 2x) what Expose handles.
Expose is good for less than 15 windows on a standard desktop. Those with the 30" Cinema displays mileage will vary.
What could you possibly use that occupies that many windows and still be 100% productive?
I'll have Photoshop open, email, browser, Dreamweaver, and Eclipse. Sometimes I'll have 2 browsers open and a terminal window. Expose handles that perfectly but that's at the limit for my screen.
I used to use virtual desktops on the mac the I realized that I wasn't being productive on 4 different desktops (really using just 3) and altered my workflow to adjust to Expose. I noticed that I switched mainly between 2 windows then cut off time wasters.
On Linux I just use no more than 2 VD's although sometimes compiling on a 3rd comes in handy.
I wish there exists a stable Expose counterpart for Linux.
if you steal from one source, that is plagiarism, if you steal from many, well, that's just research.