Hacker News new | ask | show | jobs
by binwiederhier 920 days ago
Pretty sure the "some reason" is just legal reasons. Afaik, Apple does not allow Apple software to be virtualized on non-Apple hardware. So while it may be technically possible, it may be legally questionable.

In my head, when I saw this post, I instantly thought "Time to Apple legal action.... 3, 2, 1...". But maybe I'm wrong or things have changed.

2 comments

As long as they're not distributing iOS or any proprietary ROMs with it then the emulator is perfectly legal.
Many modern emulators need a BIOS-like ROM/flash image to even boot up; the situation is much less clear there, since these usually contain software and can accordingly be copyrighted.

Some emulators solve this by providing their own (re)implementation, but that’s not always easy.

And even when it’s “just” iOS: That is copyrighted too! So it’s the same problem – either there needs to be an iOS ABI-compatible OS, or it’s probably not possible to emulate any application legally, unfortunately.

You are correct on all points of course. My main point was that unlike projects that distribute those components there's really no grounds for Apple to DMCA down the emulator's GitHub repo itself.
Agreed, unless Apple wants to make some Oracle v. Google-like claim on that iOS or firmware reimplementation violating their copyright, or maybe the emulator being capable at circumventing their FairPlay DRM for apps…?

I really hope I’m wrong about this, but I feel like between this and iMessage, Apple might lean on DMCA before too long to protect their walled garden.

Just look at how hard Nintendo shut down any attempt at emulation.
And yet emulators of Nintendo platforms are widespread.
That's exactly who I was thinking of. I'm really hoping for some precedent to be set here at some point – right now there's a large amount of FUD looming over many emulation projects.
Doing this is a huge amount of engineering work. Things like the usb controller, modem, audio, touch sensor, and many many more are often custom hardware without any specs available that you somehow need to simulate. That's not even getting into the display tech. And these things change with each new hardware iteration. In the OP repo, there appear to be 25 of these things that the author had to reverse engineer an emulate. And that's for 15 year old hardware. Things like usb controllers require thousands of lines of dense C code. Then you have all of the CPU extensions leveraged by iPhones that generally have poor/nonexistent emulation support. This type of emulation/rehosting is a notoriously hard problem even for simpler devices like routers. Modern game emulators typically move up the stack and intercept high-level graphics etc APIs because emulating all of the hardware would be a ton of work (and doing so in performantly would be impossible). The simulator that comes with xcode works in a similar way. But by doing this, you lose a lot of the capabilities that you might want from an emulated device (kernel/driver debugging, etc).

There is a reason that Corellium can charge so much for SASS access to recent-model emulated iPhones.