Projectsandcastle
Projectsandcastle是一款针对iPhone的Android/linux支持工具,该工具可以给广大研究人员提供以下实用工具:
1、loader/ 通过pongoOS加载内核和设备树
2、syscfg/ 可从目标设备的syscfg分区中提取配置信息
3、hx-touchd/ 触摸屏幕支持守护进程
4、hcdpack/ 可从源码文件中提取蓝牙固件信息
内核
内核可以从下列GitHub库中获取到稳定版本(linux-stable):
Buildroot
Projectsandcastle的Linux Ramdisk使用了buildroot来进行构建,我们提供的定制版本buildroot可以从下列地址获取:
Buildroot是一款简单、高效且易于使用的工具,它可以帮助我们通过交叉编译来生成一个嵌入式的Linux系统。
相关操作文档可以在上述地址中的docs/manual文件中找到,你可以使用命令“make manual-text”来生成一个文本文档,或读取output/docs/manual/manual.text文件。
我们可以按照下列方式来构建和使用buildroot工具:
1、运行命令“make menuconfig”;
2、选择目标架构,以及需要编译的代码包;
3、运行“make”命令;
4、等待编译完成;
5、在output/images目录中找到内核、bootloader、root文件系统等内容;
在线文档:【点我查看】
Android应用程序
安装APK文件
广大研究人员可以使用下列命令安装APK文件:
adb install foo.apk
但是,这种方式会存在以下限制因素:
1、如果是纯Java APK文件,并且不需要该项目所不支持的硬件的话,则可以正常运行;
2、仅包含了ARMv7代码(32位)的APK文件将无法运行;
3、包含了ARMv8代码(64位)的APK文件将需要对代码进行重构后方可运行;
重构代码库
我们需要将代码库文件按照16KB页面大小来构建,首先,当代码库链接成功时,尝试运行下列选项/命令:
-z common-page-size=0x4000 -z max-page-size=0x4000
如果连接器使用了C编译器来封装,那你可能还需要使用下列参数:
-Wl,-z,common-page-size=0x4000 -Wl,-z,max-page-size=0x4000
如果一切正常的话,可以使用“readelf -l”:
如果没有RELRO段,请检查具有不同属性的LOAD段是否占用了同一个16KB页;
如果有RELRO段,请确保它在16kB页边界上开始或结束;有时编译器会将RELRO放在RW段的开始处(然后RELRO应该在16k边界处结束),有时会将其放在末尾(然后RELRO应该在16k边界处开始)。
如果还存在问题的话,请检查代码库的源代码,并检查PAGE_SIZE、kPageSize、PAGE_SHIFT、PAGE_BITS等位置。
项目地址
Projectsandcastle:【GitHub传送门】


辽宁省丹东市 1F
在iPhone上跑linux,爽👍。
日本 2F
loader 用pongoOS的话,记得先刷bootrom。
北京市 3F
这玩意儿挺实用的。
广东省 4F
hx-touchd 支持多点触控吗?
辽宁省沈阳市 5F
说只能跑ARMv7,这限制太狠了。
日本 6F
我以前玩过类似工具,配置挺头疼的。
甘肃省兰州市 B1
@ 兰桡 配置那块真的麻烦,我习惯先把menuconfig的选项导出再改,省不少时间。
广东省东莞市 7F
文档全是英文,看得我眼花。
陕西省西安市 8F
大佬们又搞新玩意儿了,围观中。
浙江省 9F
整体感觉不错,就是编译时间有点长,等得我咖啡都凉了。
江苏省 B1
@ 暗影君主 编译慢是常态,开多核好一点,或者提前跑个预编译。
湖南省长沙市 10F
如果想在iPhone上跑完整的桌面linux,需要额外的GPU驱动吗?我这手机GPU好像不被识别。
贵州省贵阳市 B1
@ 鼓手萧 GPU不识别太头疼了,我A12直接黑屏😭
浙江省金华市 11F
这个loader是在checkra1n之后用吗?
福建省泉州市 12F
ARMv7都跑不了,现在还有几个APP是32位的啊。。
北京市 B1
@ Star辰 确实,大部分都64位了。
吉林省长春市 13F
文档链接点进去是404?
重庆市 14F
那蓝牙固件能直接拿来用吗?
山东省临沂市 15F
围观,感觉有点硬核。
澳大利亚 16F
触摸屏驱动要是能开源就好了。
韩国 B1
@ TuskTrotter 开源算了,天天修bug太累人
香港 17F
之前搞过交叉编译,make menuconfig那步选项多得要命。
北京市 18F
跑起来之后发热怎么样?
日本 B1
@ FangGrins 同问,估计续航尿崩。
广东省深圳市宝安区 19F
这个能搞成双系统启动不?
韩国 20F
感觉编译步骤写得还算清楚。
中国 B1
@ 独步夜雨 步骤是清楚,但实际操作一堆报错。
上海市 B1
@ 独步夜雨 步骤是清楚,但make那步报错一堆,谁来救救?
北京市 B1
@ 独步夜雨 清楚倒是,实际跑起来还是卡在依赖上,换个版本试试。
中国 21F
loader是不是只能在越狱机上用?
浙江省宁波市 22F
这下iPhone也能玩linux了,有点意思👍
中国 B1
@ TuftTilter 终于能在iPhone上跑linux了,爽死了!
澳大利亚 23F
那触摸屏延迟大不大?
日本 B1
@ 墨子贤 延迟有点明显,滑动老卡了。
上海市浦东新区 24F
之前搞过类似的,驱动问题折腾死人。
山东省滨州市 25F
hcdpack提取的固件能直接刷不?
广东省东莞市 26F
文档链接确实挂了,有人有备份吗?
日本 B1
@ 魂灯照 GitHub raw链接有时候抽风,试试加?raw=true后缀,或者去archive.org找快照。
广东省珠海市 27F
感觉挺折腾的,不过好玩就行。
日本 28F
syscfg分区都提取啥配置?
湖北省武汉市 B1
@ 水无月 主要是提取设备树和启动参数吧,比如内存布局、外设地址这些。
中国 29F
编译内核那块,选架构的时候有坑吗?
湖北省武汉市 B1
@ 破壁人 选架构时最好先确认CPU指令集,别随便选,否则编译会报错。
湖南省永州市 30F
围观,技术流的世界我不懂。
辽宁省大连市 31F
ARMv8还得重构?这也太劝退了吧😭
湖南省衡阳市 B1
@ 会说话的影子 ARMv8重构要改链接脚本和页对齐,搞不好RELRO段就炸了,真不是闹着玩的。
湖北省孝感市 32F
hx-touchd装完重启就崩,有人遇到吗?
菲律宾 B1
@ 丽江小巷 我也遇到过,崩掉是因为驱动签名冲突,换个旧版的hx-touchd试试?
日本 33F
我试过在A12上跑,GPU直接罢工,黑屏了。
山东省滨州市 34F
这工具链看着硬核,新手根本不敢碰啊。
湖北省武汉市 35F
蓝牙固件提取出来是加密的吧?能直接用?
四川省德阳市 B1
@ 未来之翼 加密的固件提出来也没法刷吧?
浙江省 36F
编译完rootfs太大,塞不进ramdisk咋办?
日本 37F
文档链接又挂了,求个离线版!
韩国 38F
编译完镜像超2G,ramdisk根本塞不下
日本 39F
这个loader得先搞懂pongoOS才行
贵州省贵阳市 B1
@ 灵魂褶皱 没错,先刷好pongoOS才能跑loader,我是用官方脚本装的,顺利上手。
浙江省 40F
hx-touchd多点触控支持吗,就怕滑不动
广东省揭阳市普宁市 41F
文档404好几次了,求个百度网盘链接
日本 42F
ARMv8还得重构代码?现在谁还用32位啊
江苏省徐州市 43F
之前弄过类似项目,光驱动就搞三天
广东省 44F
跑linux是爽,但发热能不能扛住啊
山东省烟台市 45F
内核版本选啥好?有推荐的吗
宁夏银川市 B1
@ 墨染清风 用最新稳定版就挺好,兼容性比较强。
吉林省吉林市 46F
这工具链门槛太高了,光看buildroot配置就头大。
中国 47F
hx-touchd装完直接黑屏,重启三次都一样,谁救?
江苏省无锡市 48F
求问A13能跑吗?还是仅限A12及以下?
湖北省仙桃市 49F
之前交叉编译时PAGE_SIZE没对齐,结果内核起不来,折腾一晚上。
广东省阳江市 50F
文档挂了还怎么玩?作者不维护了吗?
江苏省无锡市 51F
GPU驱动没适配的话,桌面根本没法用吧,光有shell有啥意思。
山东省 52F
蓝牙固件提取出来是bin格式,但不知道能不能直接喂给linux驱动🤔
广东省佛山市禅城区 53F
有教程吗?看不太懂怎么上手。
宁夏银川市 B1
@ 符文雕刻师 可以看下文章里的文档链接和项目地址,里面有详细说明。
河南省郑州市 54F
装好hx-touchd后,屏幕偶尔卡顿,感觉有点不稳。
印度尼西亚 55F
A13上跑linux居然还能开个终端,爽到飞起👍
广东省深圳市 56F
文档里那个make menuconfig选项太多,我都选错了,求教怎么快速定位必要项?
广东省广州市越秀区 57F
之前折腾过类似的项目,最头疼的还是PAGE_SIZE对齐,折磨一整夜。
山西省吕梁市 58F
蓝牙固件提取出来是bin,直接刷进去居然不认,坑。
江西省南昌市 59F
真的很硬核,感觉自己像在玩黑客电影里的桥段。
韩国 60F
编译完的ramdisk竟然2.5G,iPhone根本塞不下,真是笑死。
广东省湛江市 61F
这个工具链看着门槛高,但动手后挺有成就感,值得一试。