乐动体育比赛历史战绩 [原创]国东说念主原创能在xPC上运行的ios模拟器iqemu开源-iOS安全-看雪-安全社区|安全招聘|kanxue.com

发布日期:2024-02-01 08:08    点击次数:136


乐动体育比赛历史战绩 [原创]国东说念主原创能在xPC上运行的ios模拟器iqemu开源-iOS安全-看雪-安全社区|安全招聘|kanxue.com

年,苹果照旧出了基于arm指示集的M芯片乐动体育比赛历史战绩,让iOSApp能在PC上运行变得很容易。然而咱们的开发始于几年前,由于那时放眼宇宙齐莫得一个能让iosapp运行在PC上的模拟器,是以咱们决定我方开发一个。

模拟器运行于基于Intelx-CPU的macOS/Xcode(本次发布版块运行于Catalina)。Xcode自带的iOSSimulator只可运行领有源代码的,我方编译的x版块的iOSApp。咱们对iOSSimulator进行了大幅度的hack与修改,使得在苹果AppStore中发布的基于arm指示集的iOSApp八成在iOSSimulator中运行。这个模拟器也曾还有一个基于VirtualBox的壳,macOS运行其中,使通盘这个词模拟器能运行在Windows中。然而临了由于效果与兼容性方面的原因,这个磋议被根除了。

为了使arm指示集的iOSApp八成运行,有许多问题需要惩办。率先最为不问可知的等于x-与arm指示集的调养问题。指示调养上,咱们使用了qemu中枢作念环节的翻译。在模拟经由中,惟有iOSApp部分的代码是以qemu的JIT翻译模式运行的,其他通盘部分的Framework部分的代码是苹果提供的以x-原生指示的形态运行的。两种指示领有不同的ABI,因此很当然地,咱们就需要为个指示形态的代码提供ABI调养。为了作念到这极少,咱们修改了编译器LLVM的代码,为通盘这个词SDK实行了一次扫描,生成了SDK中通盘函数的参数信息。把柄这些参数信息,ABI调养智商得手地实行。

关联词ABI不仅包含c步伐,也同期包含c++的步伐。在不同的指示集下,c++的基础库,类在内存中的布局,虚函数表的枚举与达成时势齐有小的辨别。这种与c比较更无法识别的辨别使ABI调养成为弗成能。为了惩办这个问题,咱们干脆放弃了ABI调养的念念法,转而使用arm指示集的libc++.dylib达成iOSApp的c++诉求。

苹果的Framework代码也使用到了c++代码。因此苹果的Framework使用x-的libc++.dylib,iOSApp使用arm指示的libc++.dylib。为了使内存中能同期存在两份疏通名字的dylib,需要对macOS的动态集合器dyld进行修改。尽管苹果开源了dyld的代码,编译dyld却无法达成。苹果抽掉了一些环节的头文献。因此咱们只可遴荐对dyld_sim(模拟器使用的dyld)进行二进制patch。

c++特殊亦然咱们碰到的一个大问题。由于堆栈中同期存在x-与arm的函数帧,当有一个特殊抛出时,正本的Unwinding代码就无法胜任在双重函数栈中寻找适合的Exceptionhandler的任务。为此咱们修改了libunwind的代码况兼重新编译。

此外,念念要达成模拟器八成在x-的macOS上得手运行仍然有相当多的问题。比喻objc的兼容与加快,Metal绘制API的兼容,通过Kernelextension对xnu内核的修改等等。而其中最有挑战性的,等于为了让iOSApp八成完好点地运行而进行的逆向使命。跟着使命进行,通盘这个词系统的复杂性启动超出咱们的预期。这个名目咫尺八成得手运行微信与王者荣耀在PC上。

与此同期,乐动体育网页官网在苹果放出基于arm指示集的M的cpu来运行macOS后,咱们这个模拟器的必要性与挑战性就莫得那么大了。因此最终咱们决定开源通盘这个词名目。要是有东说念主有利思意思,不错不时完善这个名目。

名目地址

系统需求

当今模拟器只运行于macOSCatalina..-..原始版块(其他的macOS版块可能也能运行,未测试)与Xcode..(通过一些小更正八成升级),Xcode模拟器的iOS版块...

从AppStore里获取的App必须先行解密。

App的架构必须是ARM指示集。也不错是FAT设施的,然而其中必须包含一个ARM架构的部分。不因循单独的Armv或者Arme架构。

教养

iqemu由许多部分构成,其中的驱动部分会透彻干掉macOS的代码签名考证。莫得了代码签名后,系统会变得脆弱,容易被入侵。不要在你正在逐日使命中使用的macOS上试用模拟器。虽然,你不错通过卸载驱动或者重启来复原代码签名。

编译

关掉SIP。

关掉Gatekeeper.有些早期型号的iMac/macbook可能不需要作念这一步.

确保homebrew与Xcodecommandlinetools照旧装配。

编译/装配完成后会有教唆。

iqemu只会对Xcode的可实行文献进行patch。它不会修改macOS的系统Framework与内核。模拟器的驱动只会作念运行时的patch。要是你念念复原Xcode被patch后的文献,实行以下高歌:

珍爱:

咫尺装配剧本只因循Catalina与Xcode..。剧本会对patch过的Xcode的文献进行备份。运行剧本时必须输入你正在使用的Xcode.app的全旅途。其中的make高歌会失败,这个是泛泛的。

当你得手装配以后,你必须在每次macOS启动后,运行模拟器里的iOSApp前,运行以下高歌:(因为莫得咱们的驱动的macOS是无法运行被patch过的Xcode和simulator的)

向模拟器装配iOSApp

用任何压缩软件解压缩ipa文献,获取其中的.app文献夹。

要是你系统上有多个Xcode,确保你正在向阿谁你patch过的Xcode的模拟器装配App。用以下高歌装配:

截图

微信截图

王者荣耀截图

已知问题

尽管咱们照旧作念了许多使命,然而由于真正拓荒与模拟器诸多不同,仍然有好多App会崩溃,或者无法泛泛运行在模拟器里。当今惟有一小部分App经过测试。咱们照旧修正了好多问题然而仍然有更多的恭候修正。要是你相当但愿某个App八成运行在iqemu上,你不错在咱们github名目主页上新建一个issue。要是你找到八成运行在iqemu上的App,也宽饶见告咱们。Metal的因循相当有限,你不错在苹果官网上找到沟通的文档。咱们不错制作一个兼容层,然而还未完成。XcodeiOS模拟器中OpenGLES的达成是一个软件渲染器,它口角常相当慢的。硬件的OpenGLES达成这次并莫得开源。Signalhandler与machexceptionport的因循比较差,因此App可能将无法使用崩溃推崇这个功能。iOS系统的syscall尚未达成。

沟通咱们

其他部件,包括提供更好的调试因循,为建筑动态分析器具而作的指示级别的测时框架,检测内存经管bug,和提供更好的App兼容性,这次尚未开源。要是你感意思意思,不错向imoltencoreco#gmail.com发一封邮件,也宽饶任何的的响应和念念法。

[CTF初学培训]顶尖高校博士及硕士团队亲授《小时教你玩转CTF》乐动体育比赛历史战绩,视频+靶场+题目!助力参加CTF宇宙






Powered by 乐动体育比赛历史战绩 @2013-2022 RSS地图 HTML地图

Copyright 站群系统 © 2013-2023 乐动体育 版权所有

栏目分类

热点资讯

相关资讯