Giter Club home page Giter Club logo

iqemu64's Introduction

Overview

What is iqemu64?

iqemu64 is an iOS ARM64 emulator that runs commerical iOS apps you can find in official AppStore efficiently on an x86-64 based OSX system. iqemu64 is based on qemu as the name indicates.

Prerequisites

  1. Now it runs only on OSX Catalina 10.15.1-10.15.7 vanilla (Maybe other versions of OSX works fine too, not tested.) with Xcode 11.4.1 (Can be updated with minor work.), Simulator iOS version 13.4.1.
  2. Apps you get from AppStore must be decrypted first. Code signature free Apps are preferable.
  3. Apps must be ARM64 architecture. It can also be the FAT format, but at least an ARM64 architecture is required. A single ARMv7 or ARM64e architecture is not supported.

WARNINGS

iqemu64 is consisted of many parts, one of which is a kernel extension that completely kills off the code signing verification of the OSX system. It makes your system vulnerable to attacks. Make sure you know what you are doing before using iqemu64. Of course, you can always unload the kernel extension or reboot to recover full code signing protection.

Building

Disable SIP.

Disable Gatekeeper. Some earlier models of iMac/macbook may not have to do this.

Make sure you have Homebrew and Xcode Command Line Tools installed.

brew install pkg-config glib
git clone --recursive https://github.com/iqemu64/iqemu64.git
cd ${iqemu64_path}
sh ./setup.sh

You will know when you are done.

iqemu64 patches Xcode executables files only. It does NOT touch your system frameworks or kernel. The kernel extension does runtime memory patch only. If you want to recover Xcode patched files, use:

cd ${iqemu64_path}
sh ./restore.sh

Notes:

  • Currently the script works for Catalina and Xcode 11.4.1 only.
  • The script does backups and patches some of your Xcode binaries. You need to enter full path of your Xcode.app when running the script.
  • The make command in the script will fail. It's OK.

After you have successfully setup, you need to run these cmds on EVERY boot before running Simulator and iOS apps. (OSX without the kernel extension refuses to run Xcode/Simulator since they are patched.)

sudo cp -r ${HOME}/Develop/kernels/iemukern.kext /tmp/
sudo kextutil -t /tmp/iemukern.kext

Install iOS apps to the simulator

Unpack the ipa file with any zip archiver, expose the .app folder.

Make sure you are installing apps to the Simulator of the patched Xcode if you have multiple Xcode versions installed. Install with:

xcrun simctl install <device> <pathOf.appFolder>

Screenshots

App WeChat running:

wechat

Game Arena of Valor running:

smoba

Known issues

  1. Not all applications can run smoothly without crash due to the nature differences between the simulator and real devices. Only a small amount of apps are tested now. Many issues are fixed but more are coming. You can file an issue if you really want an app to run on iqemu64. If you find an app runnable on iqemu64, a feedback is always welcomed.
  2. Metal support are very limited. You can find document from Apple. We can work a compatible layer but it is TBD.
  3. OpenGLES implementation of Xcode iOS Simulator is a software renderer, hence program that uses OpenGLES is very slow. A hardware-based OpenGLES implementation is not open sourced for now.
  4. Signal handler/mach exception port support is not full now, which means crash reporters of apps may not work.
  5. Syscalls of iOS system are not supported yet.

Contact us

Additional components that provides better debugging support, instruction level instrumentation framework for building dynamic analysis tools, detecting memory management bugs and more app compatiblities are not open sourced. You can send a mail to imoltencoreco#gmail.com if you are interested. Thoughts and feedbacks are also welcomed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.