使用qemu启动iphone内核

编程入门 行业动态 更新时间:2024-10-20 13:39:27

使用qemu启动iphone<a href=https://www.elefans.com/category/jswz/34/1769575.html style=内核"/>

使用qemu启动iphone内核

准备工作

1 ipsw 这里选用的是这个ipsw
2
3
4 从该处下载.tar 将jtool的二进制文件 放置于/usr/lcoal/bin目录下 并 chmod +x 赋予执行权限

ipsw是iOS的固件其中的文件多以img3/img4格式加密的

需要对应的FW key做解密

目前只能处理img3格式
新版硬件只能通过OTA包中提取文件

.jl?tree=listings&file=ota.c

0x01编译好用于启动xun的qemu

git clone .git
cd xnu-qemu-arm64
./configure --target-list=aarch64-softmmu --disable-capstone
make -j16

如果编译qemu时出现缺少pkg-config**

➜ xnu-qemu-arm64 git:(master) ✗ ./configure --target-list=aarch64-softmmu --disable-capstone

直接 brew install pkg-config即可

0x02 开始修改ipsw文件

从这里 下载或者编译iemu_prep_out

sudo /Users/tesi1a/Desktop/macos/iemu_prep_out  /Users/tesi1a/Desktop/macos/iPhone_5.5_12.1_16B92_Restore.ipsw   /Users/tesi1a/Desktop/macos/iemu_prep_test3

cd 到 iemu_prep_test3这个目录使用编译好的qemu(在~/Desktop/macos/xnu-qemu-arm64/aarch64-softmmu/qemu-system-aarch64目录) 开始启动xun内核的iphone

 /Users/test/Desktop/macos/xnu-qemu-arm64/aarch64-softmmu/qemu-system-aarch64   -M iPhone6splus-n66-s8000,kernel-filename=kernel.fout,dtb-filename=device_tree.fout,secmon-filename=secure_monitor.fout,ramdisk-filename=boot_image.fout,tc-filename=static_tc.fout,kern-cmd-args="debug=0x8 kextlog=0xfff cpus=1 rd=md0 serial=2" -cpu max -m 6G -serial mon:stdio

最后成功起来了一个bash:

/iosbinpack64/usr/bin/uname -a


我们需要在里面执行动态库文件,比如把某个应用包装成dylb。然后直接调用里面的函数。
/

0x03 遇到的问题

问题一:新版mac上的clang编译缺少头文件
fatal error: ‘stdio.h’ file not found
#import<stdio.h>
^
在编译的过程中会提示 <stdio.h> not found。我是macOS 10.14.5 (18F132)

于是就去网上搜,得知 Mac 下 stdio.h 头文件应该位于 /usr/include。搞笑的是,include 文件夹消失了!去网上搜,发现很多人都遇到这个问题,估计是 Xcode 升级带来的 bug

Google了一波发现大家都会有这个问题:

同时也给了修补方案

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg


安装完成后我们发现/usr/include里的头文件已经出现了:

疑惑:
这个xcode目录下也有会头文件,没有关闭rootless 我们无法拷贝文件和链接系统目录

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include /usr/include

而刚才那个pkg文件做到了移动文件到/usr目录,好奇是怎么做到的?

第二个问题:编译配置qemu时出现缺少pkg-config

➜  xnu-qemu-arm64 git:(master) ✗ ./configure --target-list=aarch64-softmmu --disable-capstone

直接 brew install pkg-config即可

第三个问题,在xun启动的最后一步出现了这个:

回头看ipsw的解包过程:发现缺少jtool 从该处下载.tar 将jtool 放置于/usr/lcoal/bin目录下 并 chmod +x 赋予执行权限即可

参考:

/

更多推荐

使用qemu启动iphone内核

本文发布于:2024-03-09 15:18:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725353.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内核   qemu   iphone

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!