如何为sagit构建一个Mikrom

如何为 sagit 构建一个 Mikrom

图文无关(

Mikrom

mikrom 其实一直都挺想编译一个,因为其无注入插桩的特性决定其很难被检测,奈何电脑太渣没法整,现在趁着网好了白嫖了一下编译机终于整了一份,于是记录一下 )

Mikrom 其实就是一个 fart 的超进化版,加了一些 inject 和 trace 的功能,比原来的 fart 好用了不少,但是不太适配新版本 Android

不过好在有大神移植了,详见下方链接
https://github.com/dqzg12300/MikRom/issues/40#issuecomment-1364508642

这位大哥是基于 lineage 19.1 编译的,所以为了防止出现奇怪的 bug,我们还是老老实实用 19.1 吧

准备工作

一台性能非常好的电脑,至少 300GB 的存储空间,16G+ 的内存

debian 系的 linux,推荐 Ubuntu,不过我用的 kali

耐心和会动手的能力

准备源码

https://wiki.lineageos.org/devices/sagit/build

详细的 build 指南我觉得看官网就可以了,但是还是有要提的点

由于众所周知的网络环境问题,这里推荐使用清华源克隆(yyds)
https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/
这里也给出了非常详细的指南,按照指南克隆 19.1 的源码即可

ccache 记得打开,开启 compression 的情况下一般不需要 50G,30G 即可

按照官方的步骤走到

source build/envsetup.sh
breakfast sagit

之后就可以停下了,接下来是提取 blob,这个还是要先提示一下的

提取 blob

个人试了试 usb 提取,并不起效,可能是我的问题,这里非常推荐使用 prebuild 来提取

由于 lineage 官方的 ci 只提供最新的 build,19.1 的 build 需要自己寻找,不过这里我贴一个可以用的,自己下载一下就行

https://sourceforge.net/projects/ephedraceae/files/sagit/lineage-19.1/
下载安装包然后接下来按照这篇文章的操作进行解压和挂载
https://zhuanlan.zhihu.com/p/640695411
这篇文章很详细,但是这里有个问题,会找不到 system_ext。这个不需要管,因为 system_ext 是由 project treble 引入的,部分老的 rom 不支持,自然也就没有了。只需要按照他的操作提取剩下的分区就可以,注意不能有报错,出现红色的就说明你可能什么地方搞错了

Mikrom 安装

将 General110 提供的文件全部覆盖,然后添加允许 Mikrom 服务开机加载的代码

找到
build/soong/scripts/check_boot_jars/package_allowed_list.txt

这个的末尾要添加

###################################################
cn\.mik
cn\.mik\..*

修复 ArtMethod

不知道是不是我先编译了一次的问题,在编译汇编代码的时候报了个错,好像是 ArtMethod 结构体成员偏移量和一个预设的常量不匹配的问题

修改很简单,打开 art/runtime/art_method.h
找到 ArtMethod 结构体,作者在修改的地方已经做了注释,注释了 // add

所以只要把这一部分移到结构体的最后再重新编译就可以了

进行了修改之后执行

make api-update

可以应用做出的修改

编译

这个地方最好不要按照官方的方法来进行编译。官方默认的编译方法会编译出 userdebug,导致出现检测的情况,实测这样编译的系统憋憋加固是打不开的

这里推荐

croot
brunch

这样会弹出菜单让你选择,然后选择 lineage-sagit-user 就可以编译一份 user release 版本的系统了

后续

最后能在 $OUT 这个目录下面找到编译好的 zip

注意,多次编译,不同日期的编译,会产生新的,后缀不一样的 zip,注意不要拿错了就行

然后刷入系统,安装 MikManager(也在压缩包里面),就能尽情享受了!

修复 SELinux

这样编译出来的系统有个小问题,就是 SELinux 会不工作
关于这个我查找了一些资料,经过对比我发现 sepolicy 已经被编译了,但是没有被加载。

所以还是使用模块来强制启用吧。刷入面具,然后刷入 Open SElinux 模块,应该就能让 SELinux 正常工作了。

正文完
 0
评论(没有评论)