Join 3,494 readers in helping fund MetaFilter (Hide)


OSX version hack?
October 17, 2005 2:52 PM   Subscribe

OSXfilter: I want to fool applications on my Powerbook into thinking that I'm running a different version of the Mac OS than I really am. Can I? How?

I am currently using an older version of the Mac OS (Jaguar 10.2.8). A particular app that I want to use requires Panther and bails out immediately upon start-up, complaining about my system version. I want to make the application try to run, despite whatever buggy behavior doing so might cause.

I suspect that there is some function in the system API whereby applications can fetch the current system version. I further suspect that this is a string stored in some file, somewhere, that I can edit to spoof the application into thinking I'm running Panther. Basically I'm thinking of something analogous to the firefox user-agent HTTP spoofing. Does anyone know how to do this, or if it's even possible? Thanks!
posted by sergeant sandwich to Computers & Internet (6 answers total)
 
Unless it's an Apple app, it's unlikely they made it require a better version just for shits and giggles. What's more, it's probably looking for the particular version of some library it requires, finding you don't have it and then bailing out. There were a LOT of extras added in for 10.3, and developers made use of them quickly.

I'm sure there is a system call that returns the value of the current operating system, and I'm more sure that patching what it returns will be stupid (as your Mac will start crashing all the time), difficult and pointless (because the app still won't work). It definitely won't be a string in a file somewhere.

Having said all that, what exactly is the app? There might well be something purely specific to it.
posted by bonaldi at 3:07 PM on October 17, 2005


If the app requires Panther, there is likely a component on Panther that the application requires to run properly. Applications can be compiled for specific versions of the operating system, because of an "API" component that is required for the app to work.
posted by Rothko at 3:07 PM on October 17, 2005


Well, the app in question is Second Life v. 1.6.12. I realize that the version requirements are (generally) what they are for good reason. And also that what I propose would probably destabilize the system in a possibly-catastrophic way. I just wanted to know if there was a simple way to change what the system thinks its' version # is. Largely this is out of curiosity, but motivated by the application.
posted by sergeant sandwich at 3:18 PM on October 17, 2005


"Basically I'm thinking of something analogous to the firefox user-agent HTTP spoofing."

Don't. That's not usefully analagous to how the (many) underlying mechanisms work. The kernel, dylibs, and frameworks are all versioned in some way. Your favorite application could be checking the actual dylib version of some library, or it could be parsing the output of uname, or it could be using some Apple API call, or checking for the existence of a label in one of the libraries, or looking up the version of some kext, or any combination of the above.

If you're really desperate enough to basically destroy your system in an effort to make the application work -- and you will do massive damage replacing frameworks, hand-hacking kexts, hex-editing the kernel, dylibs, and so on -- you'd be better off just upgrading the damned OS. It's a lot less work, and probably more reliable.
posted by majick at 3:31 PM on October 17, 2005


There's a lot of new libraries added in each revision, so chances are it wouldn't work even if you did get it to continue.

I don't know about Carbon apps, but the Apple-endorsed thing for Cocoa apps to use is NSAppKitVersionNumber, which is stored in /System/Library/Frameworks/AppKit.framework/Versions/C/info.plist (edit at your peril). Values are:

#define NSAppKitVersionNumber10_0 577
#define NSAppKitVersionNumber10_1 620
#define NSAppKitVersionNumber10_2 663
#define NSAppKitVersionNumber10_2_3 663.6
#define NSAppKitVersionNumber10_3 743
#define NSAppKitVersionNumber10_3_2 743.14
#define NSAppKitVersionNumber10_3_3 743.2
#define NSAppKitVersionNumber10_3_5 743.24
#define NSAppKitVersionNumber10_4 824
posted by cillit bang at 3:32 PM on October 17, 2005


thanks, cillit bang; it's exactly what i was looking for. and thanks to the rest of you for your advice!
posted by sergeant sandwich at 3:49 PM on October 17, 2005


« Older How do I get .AVI movies and ....   |  A former colleague of mine has... Newer »
This thread is closed to new comments.