IOS emulators: Difference between revisions

Ilyagredasov (talk | contribs)
No edit summary
Tags: Mobile edit Mobile web edit
Emulaster (talk | contribs)
No edit summary
 
(47 intermediate revisions by 21 users not shown)
Line 15: Line 15:
Formerly, iOS was used for both Apple's phones and tablets. Then, the iOS brand was split into two parts in 2019, with iOS now being the OS exclusively used in the iPhone and the now-defunct iPod Touch. The second half, named iPadOS, is a fork of iOS for iPads that makes use of their larger screens, hence its name. Most iOS apps and games work on iPadOS.
Formerly, iOS was used for both Apple's phones and tablets. Then, the iOS brand was split into two parts in 2019, with iOS now being the OS exclusively used in the iPhone and the now-defunct iPod Touch. The second half, named iPadOS, is a fork of iOS for iPads that makes use of their larger screens, hence its name. Most iOS apps and games work on iPadOS.


Unlike its direct competitor, [[Android emulators|Android]], there are practically no usable emulators, as the official iOS SDK (macOS-only) only allows for running your own projects, i.e., they run code generated for an x86 target rather than ARM code as used by iOS. Similar to most of the Android emulators, some emulators (e.g., [[BlackThunder]]) uses two-step approach, making use of the simulator in the iOS SDK to run a few chosen iOS apps that are recompiled for x86. Unlike previous emulation trails, BlackThunder first loads a highly trimmed Hackintosh image via VirtualBox, which loads Xcode and an iOS simulator into it, then runs decompiled iOS apps recompiled for the x86 architecture. Appetize.io and other tools that claim to emulate iOS on a web browser are in reality just the iOS simulator in XCode wrapped around a cloud stream to the web browser, and like the iOS XCode simulator, need the source code to run. More recently, touchHLE managed to get a few older iPhone OS apps running by recreating some of iOS’s standard libraries and emulating just the iPhone’s CPU, and nearly the same time, QEMU-iOS got released and can successfully emulate iPhone OS 1.0 on an iPod Touch 1st generation, albeit with bugs.
The official iOS SDK (macOS-only) only allows for running your own projects, i.e., they run code generated for an x86 target rather than ARM code as used by iOS. Similarly to most of the [[Android emulators]], some emulators (e.g., [[BlackThunder]]) use two-step approach, making use of the simulator in the iOS SDK to run a few chosen iOS apps that are recompiled for x86. Unlike previous emulation trails, BlackThunder first loads a highly trimmed Hackintosh image via VirtualBox, which loads Xcode and an iOS simulator into it, then runs decompiled iOS apps recompiled for the x86 architecture. Appetize.io and other tools that claim to emulate iOS on a web browser are in reality just the iOS simulator in XCode wrapped around a cloud stream to the web browser, and like the iOS XCode simulator, need the source code to run. More recently, touchHLE managed to get a few older iPhone OS apps running by recreating some of iOS’s standard libraries and emulating just the iPhone’s CPU, and nearly the same time, QEMU-iOS got released and can successfully emulate iPhone OS 1.0 on an iPod Touch 1st generation, albeit with bugs.


==Emulators==
==Emulators==
{| class="wikitable" style="text-align:center;width:100%"
{| class="wikitable" style="text-align:center;width:100%"
! scope="col"|Name
!Name
! scope="col"|Platform(s)
!Platform(s)
! scope="col"|Latest version
!Latest version
! scope="col"|[[#Hardware_features|Hardware features]]
!Compatibility
! scope="col"|[[#Enhancements|Enhancements]]
![[Licensing|License]]
! scope="col"|Compatibility
!Active
! scope="col"|[[Licensing|License]]
![[Recommended emulators|Recommended]]
! scope="col"|Active
|+Before editing, review the [[Getting involved]] and [[Recommended emulators|Recommended]] pages. See [[Computer_specifications#Recommended_Specifications|system requirements]] page for performance demand of the emulators.<br>See tables for <span style="font-weight: bold; color: #CC0000; border: 1px solid #CC0000; padding: 2px;">[[#Enhancements|enhancements]] and [[#Hardware_features|hardware features]]</span><br>For more details such as [[licensing]], [[Source_code#Language_levels|programming language]], [[High_and_low-level_emulation|emulation method]], visit each emulator’s dedicated page.
! scope="col"|[[Recommended emulators|Recommended]]
|-
|-
!colspan="9"|x86
!colspan="9"|x86
|-
|-
|[https://touchhle.org/ touchHLE]
|[[touchHLE]]
|align=left|{{Icon|Windows|macOS|Linux}}<ref group=N>Linux release requires you to build it yourself from source.</ref>
|align=left|{{Icon|Windows|macOS|Linux}}<ref name=":0">Linux release requires you to build it yourself from source, however unofficial compiled AppImages can be found [https://github.com/pkgforge-dev/TouchHLE-AppImage here].</ref>
|[https://touchhle.org/download/ {{TouchHLEVer}}]
|[https://touchhle.org/download/ {{TouchHLEVer}}]
|{{~}}
|{{Emulator compatibility|link=https://appdb.touchhle.org/|398|879}}
|{{~}}
|{{Emulator compatibility|link=https://appdb.touchhle.org/|252|664}}
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{✓}}
|{{✓}}
Line 44: Line 41:
|align=left|{{Icon|macOS|Linux}}
|align=left|{{Icon|macOS|Linux}}
|[https://github.com/devos50/qemu-ios#running-the-ipod-touch-1g git]
|[https://github.com/devos50/qemu-ios#running-the-ipod-touch-1g git]
|{{~}}
|?
|N/A
|N/A
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
|{{}}
|{{}}
|{{✗}}
|{{✗}}
|-
|-
|[https://chefkissinc.github.io/applehax/qemu-as/ QEMUAppleSilicon]
|[https://chefkiss.dev/applehax/inferno/ ChefKiss Inferno]
|align=left|{{Icon|macOS|Linux}}
|align=left|{{Icon|macOS|Linux}}
|[https://github.com/ChefKissInc/QEMUAppleSilicon git]
|[https://github.com/ChefKissInc/Inferno git]
|?
|?
|N/A
|N/A
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
Line 63: Line 56:
|[[BlackThunder]]
|[[BlackThunder]]
|align=left|{{Icon|Windows|macOS}}
|align=left|{{Icon|Windows|macOS}}
|?
|?
|?
|?
|?
|?
Line 74: Line 65:
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
|[http://www.mamedev.org/release.html {{MAMEVer}}]
|[http://www.mamedev.org/release.html {{MAMEVer}}]
|?
|?
|N/A
|N/A
|{{Green}} {{License|GPLv2}}<br>{{License|BSD3}}
|{{Green}} {{License|GPLv2}}<br>{{License|BSD3}}
Line 84: Line 73:
|align=left|{{Icon|Windows|macOS|Linux}}
|align=left|{{Icon|Windows|macOS|Linux}}
|[https://github.com/zhkl0228/unidbg/releases/tag/v0.9.8 v0.9.8]
|[https://github.com/zhkl0228/unidbg/releases/tag/v0.9.8 v0.9.8]
|?
|?
|?
|?
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
Line 94: Line 81:
|align=left|{{Icon|macOS}}
|align=left|{{Icon|macOS}}
|Feb 6, 2021 (git)
|Feb 6, 2021 (git)
|{{~}}
|{{~}}
|Limited (some commercial apps work)
|Limited (some commercial apps work)
|{{Green}} {{License|GPLv2}} & {{License|LGPL-2.1}} ({{License|Copyleft}})
|{{Green}} {{License|GPLv2}} & {{License|LGPL-2.1}} ({{License|Copyleft}})
|{{✗}}
|{{✗}}
|-
|Unnamed iOS emulator
|align=left|{{Icon|Windows}}
|Unreleased due to touchHLE
|?
|?
|?
|{{?}}
|{{✗}}
|{{✗}}
|{{✗}}
|{{✗}}
Line 114: Line 89:
|align=left|{{Icon|macOS}}
|align=left|{{Icon|macOS}}
|[https://github.com/zydeco/aah git]
|[https://github.com/zydeco/aah git]
|?
|?
|?
|?
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}})
Line 124: Line 97:
|align=left|{{Icon|Windows}}
|align=left|{{Icon|Windows}}
|[https://github.com/ipasimulator/ipasim/releases/tag/v1.0.1 Patch v1.0.1]
|[https://github.com/ipasimulator/ipasim/releases/tag/v1.0.1 Patch v1.0.1]
|?
|?
|?
|?
|{{Green}} {{License|MIT}} ({{License|Permissive}})
|{{Green}} {{License|MIT}} ({{License|Permissive}})
Line 134: Line 105:
|align=left|{{Icon|Windows|macOS|Linux}}
|align=left|{{Icon|Windows|macOS|Linux}}
|0.9.7
|0.9.7
|?
|?
|?
|?
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
Line 144: Line 113:
|align=left|{{Icon|Linux|macOS}}
|align=left|{{Icon|Linux|macOS}}
|[https://github.com/TrungNguyen1909/qemu-t8030 git]
|[https://github.com/TrungNguyen1909/qemu-t8030 git]
|?
|?
|?
|?
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}}
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}}
Line 152: Line 119:
|align=left|{{Icon|Windows|Linux|macOS}}
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://github.com/alephsecurity/xnu-qemu-arm64 git]
|[https://github.com/alephsecurity/xnu-qemu-arm64 git]
|?
|?
|?
|?
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}}
|{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}}
Line 161: Line 126:
|[https://github.com/danzatt/QEMU-s5l89xx-port git]
|[https://github.com/danzatt/QEMU-s5l89xx-port git]
|?
|?
|{{?}} ||{{✗}} ||{{✗}}
|-
|[https://github.com/HyperHLE/HyperHLE/ HyperHLE]
|align=left|{{Icon|Windows|macOS|Linux}}
|[https://github.com/HyperHLE/HyperHLE/ git]
|?
|?
|?
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{?}} ||{{}} ||{{✗}}
|{{}}
|{{✗}}
|-
|-
!colspan="9"|ARM
!colspan="9"|ARM
|-
|-
|[https://touchhle.org/ touchHLE]
|[https://touchhle.org/ touchHLE]
|align=left|{{Icon|Android}}
|align=left|{{Icon|Android|Mac|LinuxARM}}<ref name=":0" />
|[https://touchhle.org/download/ 0.2.2]
|[https://touchhle.org/download/ 0.2.3]
|{{~}}
|{{Emulator compatibility|link=https://appdb.touchhle.org/|398|879}}
|{{~}}
|{{Emulator compatibility|link=https://appdb.touchhle.org/|252|664}}
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{✓}}
|{{✓}}
|{{~}}
|{{~}}
|-
|[https://github.com/johnny901901901/Applesauce Applesauce]
| align="left" |{{Icon|iOS|iPadOS}}
|[https://github.com/johnny901901901/Applesauce/releases git]
|?
|MPL 2.0 (Copyleft)
|{{✓}}
|
|-
|[https://github.com/HyperHLE/HyperHLE/ HyperHLE]
| align="left" |{{Icon|Android}}
|[https://github.com/HyperHLE/HyperHLE/ git]
|?
|MPL 2.0 (Copyleft)
|{{✓}}
|{{✗}}
|-
|}
|}


==Hypervisors [[Hypervisors|(...)]]==
==Hypervisors [[Hypervisors|(...)]]==
<div style="overflow-x:auto;width:100%">
{| class="wikitable" style="text-align:center;width:100%"
{| class="wikitable" style="text-align:center;width:100%"
! scope="col"|Name
!Name
! scope="col"|Platform(s)
!Platform(s)
! scope="col"|Latest version
!Latest version
! scope="col"|[[#Hardware_features|Hardware features]]
!Compatibility
! scope="col"|[[#Enhancements|Enhancements]]
![[Licensing|License]]
! scope="col"|Compatibility
!Active
! scope="col"|[[Licensing|License]]
![[Recommended emulators|Recommended]]
! scope="col"|Active
! scope="col"|[[Recommended emulators|Recommended]]
|-
|-
|[https://www.corellium.com/ Corellium]
|[https://www.corellium.com/ Corellium]
|align=left|{{Icon|Web}}
|align=left|{{Icon|Web}}
|[https://www.corellium.com/ Web-based] ($)
|[https://www.corellium.com/ Web-based] ($)
|?
|?
|?
|?
|{{Red}} {{License|Proprietary}}
|{{Red}} {{License|Proprietary}}
|{{✓}}
|{{✓}}
|{{~}}<ref group=N>Would be completely recommended if it wasn’t paid and/or a local version that runs on Windows/macOS/Linux is available.</ref>
|{{~}}<ref group=N>Would be completely recommended if it wasn’t paid and/or a local version that runs on Windows/macOS/Linux is available.</ref>
|-
| [https://github.com/Lakr233/vphone-cli vphone-cli]
|align=left|{{Icon|macOS}}
| -
| ?
|{{Green}} {{License|MIT}} ({{License|Permissive}})<ref group=N>Formerly licensed under {{License|WTFPLv2}}</ref>
| {{✓}}
| {{~}}
|}
|}


==Native==
==Native==
<div style="overflow-x:auto;width:100%">
{| class="wikitable" style="text-align:center;width:100%"
{| class="wikitable" style="text-align:center;width:100%"
! scope="col"|Name
!Name
! scope="col"|Platform(s)
!Platform(s)
! scope="col"|Latest version
!Latest version
! scope="col"|[[#Hardware_features|Hardware features]]
!Compatibility
! scope="col"|[[#Enhancements|Enhancements]]
![[Licensing|License]]
! scope="col"|Compatibility
!Active
! scope="col"|[[Licensing|License]]
![[Recommended emulators|Recommended]]
! scope="col"|Active
! scope="col"|[[Recommended emulators|Recommended]]
|-
|-
!colspan="9"|ARM
!colspan="9"|ARM
Line 220: Line 206:
|align=left|{{Icon|macOS}}<ref group=N>Requires Mac computers with Apple Silicon (M series) processors.</ref>
|align=left|{{Icon|macOS}}<ref group=N>Requires Mac computers with Apple Silicon (M series) processors.</ref>
|11 Big Sur to 26 Tahoe
|11 Big Sur to 26 Tahoe
|?
|?
|?
|?
|{{Red}} {{License|Proprietary}}
|{{Red}} {{License|Proprietary}}
Line 230: Line 214:
|align=left|{{Icon|Android}}
|align=left|{{Icon|Android}}
|Unreleased
|Unreleased
|?
|?
|?
|?
|{{Red}} {{License|Proprietary}}
|{{Red}} {{License|Proprietary}}
Line 240: Line 222:


==Comparison==
==Comparison==
''ToDo: Add info on recent vPhone and ChefKissInc Inferno developments for modern device emulation''
;Emulators
;Emulators
:;[[touchHLE]]
:;[[touchHLE]]
::An approach that aims to run older iOS apps by reimplementing standard libraries instead of internal components. Because of this [[High/Low_level_emulation|very high-level approach]], no dump of the operating system is required. Essentially it's just kind of like Wine and Rosetta combined. Its initial target was iPhone OS 2.x, and 3.0 support arrived sometime in 2024, although there are plans to support other 32-bit iOS versions, mainly 4.x, as well as the iPad. Development started in December 2022, and its initial 0.1.0 release came out in February 2023. [https://appdb.touchhle.org/ touchHLE supports a handful of apps], with most apps that do not crash on the start working absolutely perfectly. touchHLE supports running IPA files directly.  A game controller is required to control the accelerometer. touchHLE has an app archive that currently only has two apps: ''Touch & Go'' and its lite version, ''Touch & Go LITE''. These are both licensed to be free for use with touchHLE.
::An approach that aims to run older iOS apps by reimplementing standard libraries instead of internal components. Because of this [[High/Low_level_emulation|very high-level approach]], no dump of the operating system is required. Essentially, it's just kind of like Wine and Rosetta combined. Its initial target was iPhone OS 2.x, and 3.0 support arrived sometime in 2024, although there are plans to support other 32-bit iOS versions, mainly 4.x, as well as the iPad. Development started in December 2022, and its initial 0.1.0 release came out in February 2023. [https://appdb.touchhle.org/ touchHLE supports a handful of apps], with most apps that do not crash on the start working absolutely perfectly. touchHLE supports running IPA files directly.  A game controller is required to control the accelerometer. touchHLE has an app archive that currently only has two apps: ''Touch & Go'' and its lite version, ''Touch & Go LITE''. These are both licensed to be free for use with touchHLE.
 
::;HyperHLE
:::A fork of touchHLE that supports higher versions of iOS, up to iOS 10. '''This fork uses AI-assisted code, as such, we do <u>NOT</u> recommend it.'''
::
::
:;QEMU-iOS
:;QEMU-iOS
::Previously unnamed and referred to as “devos50’s qemu fork”, Based on earlier work emulating the S5L8900 and the iPhone 11 in QEMU. It can emulate an iPod Touch 1G running iOS 1.0, including iBoot, the kernel, and the Springboard, although it requires a modified NOR and NAND image. Some features, such as audio and Wi-Fi, are not emulated, and there are multiple crashes. About a year later, the same user managed to run iPhone OS 2 on an emulated iPod Touch 2G, however internet connectivity is not figured out yet, and a few 3rd party apps do work via [https://github.com/devos50/qemu-ios/issues/198 filesystem hacks], but both networking and USB (iTunes) are unemulated and cannot be installed regularly.
::Previously unnamed and referred to as “devos50’s qemu fork”, Based on earlier work emulating the S5L8900 and the iPhone 11 in QEMU. It can emulate an iPod Touch 1G running iOS 1.0, including iBoot, the kernel, and the Springboard, although it requires a modified NOR and NAND image. Some features, such as audio and Wi-Fi, are not emulated, and there are multiple crashes. About a year later, the same user managed to run iPhone OS 2 on an emulated iPod Touch 2G, however internet connectivity is not figured out yet, and a few 3rd-party apps do work via [https://github.com/devos50/qemu-ios/issues/198 filesystem hacks], but both networking and USB (iTunes) are unemulated and cannot be installed regularly.


:;QEMU-t8030/TruEmu
:;QEMU-t8030/TruEmu
::QEMU-t8030, also known as TruEmu, is an iPhone 11 emulated in QEMU, however, the current version with a published source cannot boot. TruEmu is a software that offers support for iOS 14 up to the latest iOS 16 and is built to work on iPhone 6S SecureROM hardware. It also provides out-of-box kernel debugging support and USB support (with Firmware Restore) and utilizes Apple's custom CPU features such as SPRR/GXF and custom PAC. Additionally, TruEmu is open-source software. TruEmu is made to counteract the paid Corellium’s monopoly in iOS emulation for security reasearch. The creator’s mastodon and X (formally Twitter) shows work on full SEP emulation and it booting to SpringBoard and operating the Calculator and Settings apps, but it is currently unreleased, with only minor graphical glitches. The day videos of it’s operation were posted on social medias, a user made an issue about it and archived the repo with no comment, only with a comment before it was emulated saying that he was working on multitouch. The reason it was unreleased remains uncertain. He may be developing a very capable iOS emulator, may have been hired by Corellium (he did go to a Corellium/Magnet mixer, Magnet being unknown company but likely Magnet Forensics), or he may have been stopped by an Apple employee or has been paranoid about possible Copyright issues and decided to not release it nor make a comment.
::QEMU-t8030, also known as TruEmu, is an iPhone 11 emulated in QEMU, however, the current version with a published source cannot boot. TruEmu is a software that offers support for iOS 14 up to the latest iOS 16 and is built to work on iPhone 6S SecureROM hardware. It also provides out-of-box kernel debugging support and USB support (with Firmware Restore) and utilizes Apple's custom CPU features such as SPRR/GXF and custom PAC. Additionally, TruEmu is open-source software. TruEmu is made to counteract the paid Corellium’s monopoly in iOS emulation for security reasearch. The creator’s mastodon and X (formally Twitter) shows work on full SEP emulation and it booting to SpringBoard and operating the Calculator and Settings apps, but it is currently unreleased, with only minor graphical glitches. The day videos of it’s operation were posted on social medias, a user made an issue about it and archived the repo with no comment, only with a comment before it was emulated saying that he was working on multitouch. The reason it was unreleased remains uncertain. He may be developing a very capable iOS emulator, may have been hired by Corellium (he did go to a Corellium/Magnet mixer, Magnet being unknown company but likely Magnet Forensics), or he may have been stopped by an Apple employee or has been paranoid about possible Copyright issues and decided to not release it nor make a comment.


::;QEMUAppleSilicon
::;ChefKiss Inferno (Formerly QEMUAppleSilicon)
:::Active fork of QEMU-t8030/TruEmu by ChefKissInc which aims to emulate Apple Silicon based devices (A series, M series, etc).
:::Active fork of QEMU-t8030/TruEmu by ChefKissInc which aims to emulate Apple Silicon based devices (A series, M series, etc).


:::;eShard attempt
:::;eShard attempt
::::see https://eshard.com/posts/emulating-ios-14-with-qemu , eShard, a cybersecurity company, successfully managed to run partial iOS 14. This article details the journey of researchers in successfully emulating iOS within QEMU, starting with initial attempts using open-source projects and progressing through overcoming various challenges. They utilized PongoOS for patching, developed custom tools for binary patching, and explored software rendering as a way to handle graphics. Significant hurdles included implementing a framebuffer, disabling address randomization for debugging, and bypassing security features like pointer authentication. Ultimately, by emulating an  iPhone  X chip ID and patching various system components, they achieved a functional iOS lock screen with a working textbox. They did get the home screen and system apps running but it's unknown weather it supports third party apps) As of 2025, it has achieved even more via https://eshard.com/posts/emulating-ios-14-with-qemu-part2 , able to run lots of modern apps.
::::see https://eshard.com/posts/emulating-ios-14-with-qemu , eShard, a cybersecurity company, successfully managed to run partial iOS 14. This article details the journey of researchers in successfully emulating iOS within QEMU, starting with initial attempts using open-source projects and progressing through overcoming various challenges. They utilized PongoOS for patching, developed custom tools for binary patching, and explored software rendering as a way to handle graphics. Significant hurdles included implementing a framebuffer, disabling address randomization for debugging, and bypassing security features like pointer authentication. Ultimately, by emulating an  iPhone  X chip ID and patching various system components, they achieved a functional iOS lock screen with a working textbox. They did get the home screen and system apps running but it's unknown weather it supports third-party apps) As of 2025, it has achieved even more via https://eshard.com/posts/emulating-ios-14-with-qemu-part2 , able to run lots of modern apps.




Line 272: Line 261:
::QEMU-s5l89xx-port (also known without the -port as QEMU-s5l89xx) (2012), also known as iEmu, is another failed attempt to get an iPhone running in QEMU, this time the 1st generation. The last commits were made in 2013. Any Android app going by the name iEmu is a *scam* and should be avoided. Nowadays, a malicious APK file going by the '''iEmu''' moniker is also being circulated on blogs run by script kiddies claiming to offer a way to run iOS apps on Android. More often than not, they're uploaded with the intention of generating revenue from impressionable users (through pay-per-click URL shorteners) who fall easily for those types of scams. The project started in 2011 but got mysteriously abandoned two years later before anything usable surfaced. All pages related to the project were removed. It's speculated Apple had a hand in this. The name is based on the part number of the original iPhone, and also is known to be called iVM, however, this is unconfirmed.
::QEMU-s5l89xx-port (also known without the -port as QEMU-s5l89xx) (2012), also known as iEmu, is another failed attempt to get an iPhone running in QEMU, this time the 1st generation. The last commits were made in 2013. Any Android app going by the name iEmu is a *scam* and should be avoided. Nowadays, a malicious APK file going by the '''iEmu''' moniker is also being circulated on blogs run by script kiddies claiming to offer a way to run iOS apps on Android. More often than not, they're uploaded with the intention of generating revenue from impressionable users (through pay-per-click URL shorteners) who fall easily for those types of scams. The project started in 2011 but got mysteriously abandoned two years later before anything usable surfaced. All pages related to the project were removed. It's speculated Apple had a hand in this. The name is based on the part number of the original iPhone, and also is known to be called iVM, however, this is unconfirmed.


:;[https://youtu.be/yuOcZyeUyN0?si=EC3KRa2Gfk6Gixo1 NyanSatan Virtualization Framework]
:;{{YouTubeVideo|yuOcZyeUyN0|EC3KRa2Gfk6Gixo1|NyanSatan Virtualization Framework}}
::
::


Line 293: Line 282:


:;ipasim
:;ipasim
:: ''ipasim'' (2017) is a high-level emulator written in C++ that uses patched Microsoft's winObjC to recompile 64-bit iOS apps into apps in live, plus a "reverse Rosetta" that translates ARM64 to x86 code similar to touchHLE and a few others. It doesn't support much apps except for really basic ones, like only a hello world, benchmark, simple game, and simple calculator made by the creator of the project, no other apps are known to work, even super basic ones. It was more focused on apps than games.
:: ''ipasim'' (2017) is a high-level emulator written in C++ that uses patched Microsoft's winObjC to recompile 64-bit iOS apps into apps in live, plus a "reverse Rosetta" that translates ARM64 to x86 code similarly to touchHLE and a few others. It doesn't support much apps except for really basic ones, like only a hello world, benchmark, simple game, and simple calculator made by the creator of the project, no other apps are known to work, even super basic ones. It was more focused on apps than games.


:;xnu-qemu-arm64
:;xnu-qemu-arm64
Line 314: Line 303:


:;[https://github.com/LiveContainer/LiveExec32 LiveExec32]
:;[https://github.com/LiveContainer/LiveExec32 LiveExec32]
::Highly based on LiveContainer, a similar thing for 64 bit apps, which was intended to bypass iOS sideloading restrictions by letting one app execute .ipa bundles and act like it, and unidbg based, this allows you to run 32 bit iOS apps on 64 but only modern devices. It can run apps, see https://x.com/TranKha50277352/status/1890895723710799953 for a demo of an ancient xbox 360 avatar app running albeit extremely wonky gui due to both the screen size of modern iphones, and the cascading of modern iOS design, on what should be skeumorphic design, but it’s still in development. It also requires both JIT and a filesystem DMG from an old iPhone or other iOS device.
::Highly based on LiveContainer, a similar thing for 64-bit apps, which was intended to bypass iOS sideloading restrictions by letting one app execute .ipa bundles and act like it, and unidbg based, this allows you to run 32-bit iOS apps on 64 but only modern devices. It can run apps, see https://x.com/TranKha50277352/status/1890895723710799953 for a demo of an ancient xbox 360 avatar app running albeit extremely wonky gui due to both the screen size of modern iphones, and the cascading of modern iOS design, on what should be skeumorphic design, but it’s still in development. It also requires both JIT and a filesystem DMG from an old iPhone or other iOS device.


==Hardware features==
==Hardware features==
Line 320: Line 309:


{| class="wikitable" style="text-align:center;width:100%"
{| class="wikitable" style="text-align:center;width:100%"
|+Please only include recommended emulators in this table. Do not bump or spam GitHub threads, issues, or feature request pages.
|- style="font-weight:bold;"
|- style="font-weight:bold;"
! colspan=2 | Name
! colspan=2 | Name
Line 326: Line 316:
! Corellium
! Corellium
|-
|-
| colspan=2 | [[Wikipedia:IOS#Home_screen|Home screen]]<br/><small>This shouldn't be confused with emulator frontend/GUI.</small>
| colspan=2 | [[Wikipedia:IOS#Home_screen|Home screen]]<br><small>This shouldn't be confused with emulator frontend/GUI.</small>
| {{✗}}
| {{✗}}
| {{~}}
| {{~}}
Line 361: Line 351:
| {{?}}
| {{?}}
|-
|-
| colspan=2 | [[List_of_games_that_support_tracked_motion_controllers#iOS_Emulation|Motion sensors]]
| colspan=2 | [[List_of_console_games_that_support_motion_controls#iOS_Emulation|Motion sensors]]
| {{✓}}[https://github.com/hikari-no-yume/touchHLE/blob/trunk/OPTIONS_HELP.txt#L33 *]
| {{✓}}[https://github.com/touchHLE/touchHLE/blob/trunk/OPTIONS_HELP.txt#L35 *]
| {{✗}}
| {{✗}}
| {{?}}
| {{?}}
Line 372: Line 362:
|-
|-
| rowspan=2 | Connectivity
| rowspan=2 | Connectivity
| [[Preservation_projects#Private_Platform_Servers|Game Center]]<br/><small>Achievements, Challenges, Leaderboards etc.</small>
| [[Preservation_projects#Private_Platform_Servers|Game Center]]<br><small>Achievements, Challenges, Leaderboards etc.</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
Line 389: Line 379:
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | iPhone OS 2<br/><small>iPhone OS 2.2.1 was the last version compatible solely with ARMv6 chips.
| colspan=2 | iPhone OS 2<br><small>iPhone OS 2.2.1 was the last version compatible solely with ARMv6 chips.
| {{✓}}
| {{✓}}
| {{✓}}
| {{✓}}
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | iPhone OS 3<br/><small>Supported both ARMv6 and ARMv7-A chips.</br>
| colspan=2 | iPhone OS 3<br><small>Supported both ARMv6 and ARMv7-A chips.<br>
| {{~}} <br> <small>TouchHLE currently only supports 3.0 and 3.1.x.</small>
| {{}}
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | iOS 4<br/><small>iOS 4.2.1 was the last version supported ARMv6 chips.</small>
| colspan=2 | iOS 4<br><small>iOS 4.2.1 was the last version supported ARMv6 chips.</small>
| {{~}}
| {{~}} <br> <small>TouchHLE currently only supports 4.0.x and 4.1.</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
Line 409: Line 399:
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | iOS 6<br/><small>iOS 6.1.6 was the last version compatible solely with 32-bit ARMv7-A chips.</small>
| colspan=2 | iOS 6<br><small>iOS 6.1.6 was the last version compatible solely with 32-bit ARMv7-A chips.</small>
|style="background:skyblue;"|[https://github.com/hikari-no-yume/touchHLE#touchhle-high-level-emulator-for-iphone-os-apps Future goal]
|style="background:skyblue;"|[https://github.com/hikari-no-yume/touchHLE#touchhle-high-level-emulator-for-iphone-os-apps Future goal]
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | iOS 7 to 10<br/><small>Supports both 64-bit ARMv8''x''-A and 32-bit ARMv7-A chips. iOS 10.3.4 was the last version that supported 32-bit chips.</small>
| colspan=2 | iOS 7 to 10<br><small>Supports both 64-bit ARMv8''x''-A and 32-bit ARMv7-A chips. iOS 10.3.4 was the last version that supported 32-bit chips.</small>
|style="background:{{{color|#FFD2D2}}};"|[https://github.com/hikari-no-yume/touchHLE/issues/181#issuecomment-1777098259 Never]
|style="background:{{{color|#FFD2D2}}};"|[https://github.com/hikari-no-yume/touchHLE/issues/181#issuecomment-1777098259 Never]
| {{✗}}
| {{✗}}
Line 436: Line 426:
! colspan=5 | [https://developer.apple.com/documentation/xcode/application-binary-interfaces Supported ABIs]
! colspan=5 | [https://developer.apple.com/documentation/xcode/application-binary-interfaces Supported ABIs]
|-
|-
| colspan=2 | [https://developer.apple.com/documentation/xcode/writing-armv6-code-for-ios ios_armv6] (iPhone OS 1 – iOS 4.2.1)<br/><small>Supporting ios_armv6 ABI is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.</small>
| colspan=2 | [https://developer.apple.com/documentation/xcode/writing-armv6-code-for-ios ios_armv6] (iPhone OS 1 – iOS 4.2.1)<br><small>Supporting ios_armv6 ABI is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.</small>
| {{✓}}[https://github.com/merryhime/dynarmic?tab=readme-ov-file#supported-guest-architectures *]
| {{✓}}[https://github.com/merryhime/dynarmic?tab=readme-ov-file#supported-guest-architectures *]
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| colspan=2 | [https://developer.apple.com/documentation/xcode/writing-armv7-code-for-ios ios_armv7a] (iPhone OS 3 – iOS 10.3.4)<br/><small>Supporting ios_armv7a ABI is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.<br/> Older applications and games often rely on the [[Wikipedia:ARM_architecture_family|ARM 32-bit (Cortex)]] architecture, which isn't used in newer hardware.</small>
| colspan=2 | [https://developer.apple.com/documentation/xcode/writing-armv7-code-for-ios ios_armv7a] (iPhone OS 3 – iOS 10.3.4)<br><small>Supporting ios_armv7a ABI is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.<br> Older applications and games often rely on the [[Wikipedia:ARM_architecture_family|ARM 32-bit (Cortex)]] architecture, which isn't used in newer hardware.</small>
| {{✓}}[https://github.com/merryhime/dynarmic?tab=readme-ov-file#supported-guest-architectures *]
| {{✓}}[https://github.com/merryhime/dynarmic?tab=readme-ov-file#supported-guest-architectures *]
| {{✗}}
| {{✗}}
Line 453: Line 443:
! colspan=5 | [https://developer.apple.com/documentation/technologies Supported APIs]
! colspan=5 | [https://developer.apple.com/documentation/technologies Supported APIs]
|-
|-
| colspan=2 | [https://developer.apple.com/documentation/opengles OpenGL ES x.x] (iPhone OS 2 – iOS 12.0)<br/><small>Supporting OpenGL ES x.x APIs is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.</small>
| colspan=2 | [https://developer.apple.com/documentation/opengles OpenGL ES x.x] (iPhone OS 2 – iOS 12.0)<br><small>Supporting OpenGL ES x.x APIs is crucial for emulators due to compatibility and [[Preservation_projects|preservation]] reasons.</small>
| {{~}}[https://github.com/hikari-no-yume/touchHLE?tab=readme-ov-file#development-status *]<br/><small>TouchHLE currently support only OpenGL ES 1.[https://old.reddit.com/r/emulation/comments/1gqdrwm/touchhle_emulator_development_video/lx26wwu/]</small>
| {{~}}[https://github.com/hikari-no-yume/touchHLE?tab=readme-ov-file#development-status *]<br><small>TouchHLE currently support only OpenGL ES 1.[https://old.reddit.com/r/emulation/comments/1gqdrwm/touchhle_emulator_development_video/lx26wwu/]</small>
| {{?}}
| {{?}}
| {{?}}
| {{?}}
Line 467: Line 457:
==Enhancements==
==Enhancements==
{| class="wikitable" style="text-align:center;width:100%"
{| class="wikitable" style="text-align:center;width:100%"
|+Please only include recommended emulators in this table. Do not bump or spam GitHub threads, issues, or feature request pages.
! colspan=2 style="width:50%" | Name
! colspan=2 style="width:50%" | Name
! TouchHLE
! TouchHLE
Line 477: Line 468:
|-
|-
|rowspan=6 | Post-Processing
|rowspan=6 | Post-Processing
| [[Shader_Presets|Shader Chain]]
| {{Enhancements/Post-processing/Shader chain}}
| {{✗}}[https://github.com/touchHLE/touchHLE/issues/532]
| {{✗}}[https://github.com/touchHLE/touchHLE/issues/532]
| {{✗}}
| {{✗}}
|-
|-
| [[Shaders_and_filters|Filters]]
| {{Enhancements/Post-processing/Filters}}
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
|[[Shaders_and_filters#AI-powered filters|AI-powered filter compatible]]<br/><small>([https://www.nvidia.com/en-us/geforce/news/gfecnt/nvidia-freestyle-ansel-enhancements-geforce-experience-article/ Freestyle])</small>
|{{Enhancements/Post-processing/AI-powered filter compatible}}
| {{?}}
| {{?}}
| {{?}}
| {{?}}
|-
|-
| [[Wikipedia:Category:Anti-aliasing_algorithms|Post-rendering AA]]<br/><small>(FXAA, TXAA and MLAA/SMAA)</small>
| [[Wikipedia:Category:Anti-aliasing_algorithms|Post-rendering AA]]<br><small>(FXAA, TXAA and MLAA/SMAA)</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| [[Wikipedia:Comparison_gallery_of_image_scaling_algorithms|Post-rendering scaling]]<br/><small>(Sharp bilinear, Lanczos and [[Wikipedia:GPUOpen#FidelityFX_Super_Resolution|FSR 1]])</small>
| [[Wikipedia:Comparison_gallery_of_image_scaling_algorithms|Post-rendering scaling]]<br><small>(Sharp bilinear, Lanczos and [[Wikipedia:GPUOpen#FidelityFX_Super_Resolution|FSR 1]])</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
Line 523: Line 514:
|-
|-
| rowspan=4 | Input
| rowspan=4 | Input
| [[Controllers#Mouse Injectors for Emulators|Keyboard input injection]]<br/><small>Early versions of iOS didn't support keyboard input.<br/>One way an iOS emulator can provide keyboard input for these versions is through the injection method, which sends keystrokes input data directy into emulated memory.</small>
| [[Controllers#Mouse Injectors for Emulators|Keyboard input injection]]<br><small>Early versions of iOS didn't support keyboard input.<br>One way an iOS emulator can provide keyboard input for these versions is through the injection method, which sends keystrokes input data directy into emulated memory.</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| [[Controllers#Mouse Injectors for Emulators|Mouse input injection]]<br/><small>Early versions of iOS didn't support mouse input.<br/>One way an iOS emulator can provide mouse input for these versions is through the injection method, which sends cursor input data directy into emulated memory.</small>
| [[Controllers#Mouse Injectors for Emulators|Mouse input injection]]<br><small>Early versions of iOS didn't support mouse input.<br>One way an iOS emulator can provide mouse input for these versions is through the injection method, which sends cursor input data directy into emulated memory.</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| [[Controllers#Mouse Injectors for Emulators|Gamepad input injection]]<br/><small>Before [[Wikipedia:MFi_Program|MFi]] extended support in iOS 7 (unlocking gamepad compatibility for devices like the [https://blog.logitech.com/2013/11/20/compatible-games-for-logitech-powershell-controller-battery/ Logitech Powershell Controller]).<br/> Earlier iOS versions (1-to-6) offered [https://www.gottabemobile.com/ios-6-gaming-ipad-controller-iphone/ no native gamepad support].</small>
| [[Controllers#Mouse Injectors for Emulators|Gamepad input injection]]<br><small>Before [[Wikipedia:MFi_Program|MFi]] extended support in iOS 7 (unlocking gamepad compatibility for devices like the [https://blog.logitech.com/2013/11/20/compatible-games-for-logitech-powershell-controller-battery/ Logitech Powershell Controller]).<br> Earlier iOS versions (1-to-6) offered [https://www.gottabemobile.com/ios-6-gaming-ipad-controller-iphone/ no native gamepad support].</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
Line 552: Line 543:
| {{✗}}
| {{✗}}
|-
|-
| Command Line Options
| Command-Line Options
| {{✓}}
| {{✓}}
| {{?}}
| {{?}}
|-
|-
| On-Screen Display<br/><small>Showcases messages, controller input state which is useful for speedrunners, performance data, active settings, and various notifications.</small>
| On-Screen Display<br><small>Showcases messages, controller input state which is useful for speedrunners, performance data, active settings, and various notifications.</small>
| {{✗}}
| {{✗}}
| {{✗}}
| {{✗}}
|-
|-
| Built-in On-Screen Control<br/><small>Simulating touch input on display via keyboard or gamepad. This QoL enhancement is crucial for lots of touch input exclusive games.<br/>Also you can use third party apps such as [https://apps.apple.com/us/app/shootingplus-v3/id1447087625 ShootingPlus V3] for this.</small>
| Built-in On-Screen Control<br><small>Simulating touch input on display via keyboard or gamepad. This QoL enhancement is crucial for lots of touch input exclusive games.<br>Also you can use third-party apps such as [https://apps.apple.com/us/app/shootingplus-v3/id1447087625 ShootingPlus V3] for this.</small>
| {{✓}}[https://github.com/hikari-no-yume/touchHLE/blob/trunk/OPTIONS_HELP.txt#L33 *]
| {{✓}}[https://github.com/hikari-no-yume/touchHLE/blob/trunk/OPTIONS_HELP.txt#L33 *]
| {{✗}}
| {{✗}}
Line 572: Line 563:
| {{✗}}
| {{✗}}
|-
|-
|[https://www.portablefreeware.com/faq.php#portable Portable] and [https://www.portablefreeware.com/faq.php#stealth Stealth]<br /><small>Useful enhancement feature for non-personal computer use or plug-and-play scenarios. However, the software may still require the necessary [[Computer_specifications#Operating_System|prerequisites and dependencies]] for your operating system if it is not statically linked.</small>
|[https://www.portablefreeware.com/faq.php#portable Portable] and [https://www.portablefreeware.com/faq.php#stealth Stealth]<br><small>Useful enhancement feature for non-personal computer use or plug-and-play scenarios. However, the software may still require the necessary [[Computer_specifications#Operating_System|prerequisites and dependencies]] for your operating system if it is not statically linked.</small>
| {{✓}}
| {{✓}}
| {{✗}}
| {{✗}}
Line 584: Line 575:
| colspan=11 |  Exclusive to [https://www.emuvr.net/wiki/Installation_Guide#Downloads libretro cores] at the moment. So there is no support.
| colspan=11 |  Exclusive to [https://www.emuvr.net/wiki/Installation_Guide#Downloads libretro cores] at the moment. So there is no support.
|-
|-
|Rich Presence (RPC)<br/><small>Allows the emulator to share real-time game session details (e.g., current game title, level, boss, playtime, or custom status) with external applications. This enables features such as displaying what you're playing on your profile, inviting friends to spectate, or triggering join-in-progress functionality where supported.</small>
|Rich Presence (RPC)<br><small>Allows the emulator to share real-time game session details (e.g., current game title, level, boss, playtime, or custom status) with external applications. This enables features such as displaying what you're playing on your profile, inviting friends to spectate, or triggering join-in-progress functionality where supported.</small>
|{{Dunno}}
|{{Dunno}}
|{{Dunno}}
|{{Dunno}}
|-
|-
|Screen translator<br /><small>Using optical character recognition (OCR) and other techniques, this feature can provide live translation of in-game text, text-to-speech for visually impaired users, and more — either on demand or automatically.</small></small>
|Screen translator<br><small>Using optical character recognition (OCR) and other techniques, this feature can provide live translation of in-game text, text-to-speech for visually impaired users, and more — either on demand or automatically.</small></small>
|colspan="11" |You can use [https://docs.libretro.com/guides/ai-service/ RetroArch's AI Service] or the standalone offline [https://github.com/bquenin/interpreter bquenin's Interpreter].
|colspan="11" |You can use [https://docs.libretro.com/guides/ai-service/ RetroArch's AI Service] or the standalone offline [https://github.com/bquenin/interpreter bquenin's Interpreter].
|-
|-
Line 607: Line 598:
*[[Wikipedia:Comparison_of_mobile_operating_systems|Comparison of mobile operating systems]] (Wikipedia)
*[[Wikipedia:Comparison_of_mobile_operating_systems|Comparison of mobile operating systems]] (Wikipedia)
*Reddit: [https://www.reddit.com/r/LegacyJailbreak/ r/LegacyJailbreak] (old devices) [https://www.reddit.com/r/Jailbreak/ r/Jailbreak] (new devices)
*Reddit: [https://www.reddit.com/r/LegacyJailbreak/ r/LegacyJailbreak] (old devices) [https://www.reddit.com/r/Jailbreak/ r/Jailbreak] (new devices)
*[https://youtu.be/4RcSYyEK8kY ciciplusplus: Surviving on an island with a Windows laptop - touchHLE update]
*{{YouTubeVideo|4RcSYyEK8kY|ciciplusplus: Surviving on an island with a Windows laptop - touchHLE update}}
*[https://hikari.noyu.me/blog/2023-04-13-touchhle-in-depth-1-function-calls.html hikari's blog: touchHLE in depth, part 1: a day in the life of a function call]
*[https://hikari.noyu.me/blog/2023-04-13-touchhle-in-depth-1-function-calls.html hikari's blog: touchHLE in depth, part 1: a day in the life of a function call]