While developing mirrord, which heavily relies on injecting itself into other people’s binaries, we ran into some challenges posed by macOS’s SIP (System Integrity Protection). This post details how we ultimately overcame these challenges, and we hope it can be of help to other people hoping to learn about SIP, as we’ve learned the hard way that there’s very little written about this subject on the internet. Potentially useful information for macOS developers.
One unfortunate fact of my life is that I have to deal with an obscure database whose macOS drivers require the addition of a directory to DYLD_LIBRARY_PATH for their Python driver to find them. To make matters worse, Apple’s CLI tools strip that variable away as part of macOS’s System Integrity Protection (SIP) before running a command. Given that DYLD_* environment variables are a known attack vector for Mac malware, that’s a good thing in general. However, sometimes one needs a workaround to get the job done. Some of this made sense to me.
Via Hackaday: We’re used to the so-called “Hackintoshes”, non-Apple hardware running MacOS. One we featured recently was even built into the case of a Nintendo Wii. But Dandu has gone one better than that, by running MacOS on an unmodified Wii, original Nintendo hardware (French, Google Translate link). How has this seemingly impossible task been achieved? Seasoned Mac enthusiasts will remember the days when Apple machines used PowerPC processors, and the Wii uses a PowerPC chip that’s a close cousin of those used in the Mac G3 series of computers. Since the Wii can run a Linux-based OS, it can therefore run Mac-on-Linux, providing in theory an environment in which it can host one of the PowerPC versions of MacOS. So it’s not really running MacOS 9.2.2 directly on the hardware, but it’s close enough. Impressive work.
I like to do some retro programming, but SheepShaver, the best Mac emulator out there, has a bug that makes copy and paste not function, so is kind of hard to use. I was recently made aware that there is a tool named mpw (lowercase) that emulates just enough of classic MacOS to run Apple’s MPW compiler suite’s command line tools on MacOS X. So I thought I’d give it a try and set that up. The audience for this is probably quite small, but information and tools like this are vital in keeping old platforms approachable for developers and enthusiasts.
TinyClock is a tiny true 5-arch universal Mac OS X single-binary GUI application. Single universal binary, that can be natively executed on every hardware platform Mac OS X was made for (32/64 bit, PowerPC/x86/AppleSilicon). Just fun.
FUSE-T is a kext-less implementation of FUSE for macOS that uses NFS v4 local server instead of a kernel extension. The main motivation for this project is to replace macfuse that implements its own kext to make fuse work. With each version of macOS it’s getting harder and harder to load kernel extensions. Apple strongly discourages it and, for this reason, software distributions that include macfuse are very difficult to install. With Apple locking down macOS more and more, developers have to resort to ingenious solutions to maintain the same level of functionality as before. This is an example of that.
In the last six months macOS malware protection has changed more than it did over the previous seven years. It has now gone fully pre-emptive, as active as many commercial anti-malware products, provided that your Mac is running Catalina or later. This article updates those I’ve previously written about Apple’s new tool in the war against malware, XProtect Remediator. Apple has been slowly building out its anti-malware and antivirus tools in macOS, and it has remained mostly quiet about it – understandable considering how bad tech press would have a field day with stories about Apple effectively turning macOS malware protection into a regular antivirus scanner.
Skirting the official macOS system requirements to run new versions of the software on old, unsupported Macs has a rich history. Tools like XPostFacto and LeopardAssist could help old PowerPC Macs run newer versions of Mac OS X, a tradition kept alive in the modern era by dosdude1’s patchers for Sierra, High Sierra, Mojave, and Catalina. For Big Sur and Monterey, the OpenCore Legacy Patcher (OCLP for short) is the best way to get new macOS versions running on old Macs. It’s an offshoot of the OpenCore Hackintosh bootloader, and it’s updated fairly frequently with new features and fixes and compatibility for newer macOS versions. The OCLP developers have admitted that macOS Ventura support will be tough, but they’ve made progress in some crucial areas that should keep some older Macs kicking for a little bit longer. I always love the dedication of these people trying to get macOS to run on hardware it was never intended to run on. It must be a small scene, actively fighting Apple every step along the way, but usually succeeding in the end. These are people giving older Macs a longer lease on life, and that’s only to be applauded.
The WWDC 2019 had a major impact on the UI toolkit landscape: while the venerable AppKit APIs remained available, Apple removed the old Carbon APIs and introduced 2 brand new frameworks: Mac Catalyst and SwiftUI. Apple sporadically mentioned some apps built with these new UI toolkits. In this article, I try to bring a better overview of Apple’s use of AppKit, Mac Catalyst and SwiftUI in the different versions of macOS, from macOS Mojave to macOS Ventura. Really great visualisation, and shows that the march to SwiftUI continues – however, I’m not entirely sure macOS users should be happy about that.
One of the coolest power-user Mac features of the Apple Silicon era is Apple’s Virtualization framework. Normally the purview of paid software like Parallels Desktop or VMWare Fusion, virtualization lets you run multiple operating systems on one Mac at the same time, which is useful for anyone who wants to run Linux on top of macOS, test an app they’re developing in different versions of macOS, or take a look at the latest macOS Ventura beta without risking their main install. Apple’s documentation and sample projects provide everything you need to get a simple VM up and running with no additional software required. Still, some independent developers have built simple, free apps on top of the Virtualization framework that provides a GUI for customizing settings and juggling multiple guest OSes. A very useful feature, especially for developers.
When macOS Ventura was announced earlier this month, its system requirements were considerably stricter than those for macOS Monterey, which was released just eight months ago as of this writing. Ventura requires a Mac made in 2017 or later, dropping support for a wide range of Monterey-supported Mac models released between 2013 and 2016. This certainly seems more aggressive than new macOS releases from just a few years ago, where system requirements would tighten roughly every other year or so. But how bad is it, really? Is a Mac purchased in 2016 getting fewer updates than one bought in 2012 or 2008 or 1999? And if so, is there an explanation beyond Apple’s desire for more users to move to shiny new Apple Silicon Macs? Unlike in the Windows world (at least, up until Windows 11) and the Linux/BSD world, Macs are more like smartphones or tablets in that support for them is regularly cut off well before the point they could no longer run the latest version of macOS. This has both advantages and disadvantages we don’t need to regurgitate here, but it’ll be interesting to see if the Apple Silicon era will accelerate the culling of older Macs.
With macOS 13, Apple has announced that Apple Silicon systems running ARM Linux virtual machines will now be able to access Rosetta for translating of x86_64 Linux binaries… In other words, great Linux x86_64 support when running within Linux (Arm-based) VMs. This is a neat addition.
As expected, Apple has used the stage at its WWDC 2022 keynote to reveal the features and changes coming to macOS in the next major software update for the platform, macOS 13 Ventura. Ventura’s headlining feature is a new multitasking interface called Stage Manager. It’s being billed as a way to fight window clutter on a busy desktop—enter Stage Manager mode, and one of your windows floats to the center of the screen, pushing your other windows into a compressed navigation column on the left of the screen. Click a different app window on the left, and it will fly to the center of the screen, knocking the app you were using before into the navigation column. I’m not entirely sure if adding a second dock to the Mac is going to be a pleasant experience, but I at least like the throwback to a very deep cut – looks-wise, this reminded me a lot of Sun’s Project Looking Glass, a weird, fully 3D *NIX desktop environment with flippable and rotatable windows built in Java. Then again, Apple’s Expose is still one of the best window management features of the past two decades, so after some use this new Stage Manager feature might be of the same pedigree.
As of April 21, 2022, Apple has discontinued macOS Server. Existing macOS Server customers can continue to download and use the app with macOS Monterey. The most popular server features—Caching Server, File Sharing Server, and Time Machine Server are bundled with every installation of macOS High Sierra and later, so that even more customers have access to these essential services at no extra cost. I doubt many people are running macOS Server installations at this point, so I don’t think this will impact a great number of people.
A lot. I was the tech lead at Apple for making Mac OS X pass UNIX certification, and it was done to get Apple out of a $200M lawsuit filed by The Open Group, for use of the UNIX trademark in advertising. Fascinating bit of history.
2005! The future is here! You have just spent $129 for the newest release of Mac OS X: Tiger. You’re amazed by the brand new Spotlight and Safari RSS, you like your new OS so much you want to develop apps for it. You read on Apple’s website about this app “Xcode” that just received the version 2.0 update. That’s it! Time to code! You fire up Safari, go to Yahoo! and start searching for Xcode tutorials, unfortunately, besides a bunch of Geocities websites mentioning “Web 2.0” (or whatever that means), you don’t find much information online on how to create apps for Tiger. Wouldn’t it be nice to find a tutorial to help you to get started? I attended a launch party for Tiger at a third party Apple reseller in Berlin. The good old days – when Apple was fun. Good times.
Monterey feels of a piece with maintenance-mode macOS updates like El Capitan or Sierra or High Sierra—change the default wallpaper, and in day-to-day use you can easily forget that you’ve upgraded from Big Sur at all. It’s not that there aren’t any new features here—it’s just that improving any operating system as mature as macOS involves a lot of tinkering around the edges. But there are plenty of things to talk about in even the most minor of macOS releases, and Monterey is no different. The update refines the Big Sur design and rethinks automation and what’s possible via local wireless communication between devices. It also makes a long list of minor additions that won’t be exciting for everyone but will be interesting for some subset of Mac users. It’s available now, but it does cut support for quite a few Macs that Big Sur still supported.
In the next few days those using M1 Macs will be updating to Big Sur 11.5, blissfully ignorant of how, as an admin user, their Mac could refuse to update. Because now, in addition to regular users, admin users and root, there’s another class of admin user: the Owner. Let me explain. Just something to be aware of.
Kernel extensions have long been one of the most powerful and dangerous features of macOS. They enable Apple and third-party developers to support the rich range of hardware available both within and connected to Macs, to add new features such as software firewalls and security protection, and to modify the behaviour of macOS by rerouting sound output to apps, and so on. With those comes the price that kernel extensions can readily cause the kernel to panic, can conflict with one another and with macOS, and most of all are a security nightmare. For those who develop malicious software, they’re the next best thing to installing their own malicious kernel. For some years now, Apple has been encouraging third-party developers to move away from kernel extensions to equivalents which run at a user level rather than in Ring 1. However, it has only been in the last year or so that Apple has provided sufficient support for this to be feasible. Coupled with the fact that M1 Macs have to be run at a reduced level of security to be able to load third-party kernel extensions, almost all software and hardware which used to rely on kernel extensions should now be switching to Apple’s new alternatives such as system extensions. This article explains the differences these make to the user. A good, detailed look at what Apple is doing with kernel extensions in macOS.
The utter user-interface butchery happening to Safari on the Mac is once again the work of people who put iOS first. People who by now think in iOS terms. People who view the venerable Mac OS user interface as an older person whose traits must be experimented upon, plastic surgery after plastic surgery, until this person looks younger. Unfortunately the effect is more like this person ends up looking… weird. These people look at the Mac’s UI and (that’s the impression, at least) don’t really understand it. Its foundations come from a past that almost seems inscrutable to them. Usability cues and features are all wrinkles to them. iOS and iPadOS don’t have these strange wrinkles, they muse. We must hide them. We’ll make this spectacular facelift and we’ll hide them, one by one. Mac OS will look as young (and foolish, cough) as iOS! I haven’t encountered a single person who likes the new Safari tab design on macOS.