首页
论坛
课程
招聘
[推荐]一个自用安卓BOOT.IMG修改工具(已开源)
2021-6-6 18:16 22131

[推荐]一个自用安卓BOOT.IMG修改工具(已开源)

2021-6-6 18:16
22131

https://github.com/rev1si0n/bxxt

 

如果你会接触到 boot.img 的话,那么这个工具可能会对你有帮助。因为当初需要研究supersu之类的相关原理,
而网上关于 boot.img 解包打包等操作的文章及工具实在太杂乱了,挺费时间,所以我抱着顺便理解的心态编写了此工具。

 

当然,第一版主要是 python 来实现的,功能也仅限于 ramdisk 的解包打包,但是随着后来遇到了更多的问题及需要,
改用c编写了目前仅可在安卓设备上运行的二进制程序。功能也增加到了基本可以自动处理 boot.img 中的任何对象。

 

原本,如果你需要对内核进行patch,
你需要,解包boot.img,解压内核,修改,压缩内核,打包boot.img来完成这一系列动作
但是这个工具,可以让你缩减到只用三个动作
解包boot.img,修改,打包boot.img

 

作为一个过来人,我想说,光解压和压缩内核这两个动作,就有可能让新手因为某些原因或玄学问题让你刷入后无法开机。

 

有了这个,你可以很方便的修改内核/命令行参数,ramdisk,甚至镜像中的设备树。当然作为附加功能,也支持 selinux 规则的注入(感谢sepolicy-inject)

 

不过它也有缺点,它只能在设备上运行(android-arm/64,这也意味着你只能在安卓adb shell用sed之类的工具编辑),只支持 android 6.0 - 10 的启动镜像(因为自从11改变了很多东西,可能会支持一小部分android 11的镜像,当然也不支持6.0以下的,因为它们太老了)。
(注意请不要尝试将解包的内容 adb pull 到 windows 主机,你将会丢失 ramdisk 的文件权限)

 

Github: https://github.com/rev1si0n/bxxt

 

当然,它目前也没有发布源码仅有二进制文件,一是我要把它从依赖三方和私有模块甚至Makefile的项目单独提取出来挺麻烦,二是我写的挺烂而且BUG应该多的不行。不过完善以后肯定会发布。
使用方法都在 README 当中。

 

基础使用演示(asciinema )
https://asciinema.org/a/HcZC215U9CIViz7w5oXThOCgL

 

新人第一次发帖,多多关照。


【公告】欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

最后于 2021-7-13 11:56 被RiDiN编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (26)
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-6-7 10:37
2
0

举个例子,此工具,可以使了解这篇文章所需的精力缩减到 20% (我没有说他介绍流程不好,但是并不是所有人都会关心细节的实现流程,特别对于新手这可能会是一个劝退的原因)

https://bbs.pediy.com/thread-266625.htm

最后于 2021-6-7 10:38 被RiDiN编辑 ,原因:
雪    币: 60
活跃值: 活跃值 (636)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpacg 活跃值 2021-6-7 11:32
3
0
magisk是开源的,需要的都有。
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-6-7 14:02
4
0
jpacg magisk是开源的,需要的都有。

当然,所有东西都是开源的,我只不过是把他们整合到了一起,你想写你也可以写一个,你想用2条命令替代一条,也没人阻止你。

最后于 2021-6-7 14:04 被RiDiN编辑 ,原因:
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-6-7 14:14
5
0

还有我说的是,是暂时没有开源并不代表不会,没人用我也就没必要费精力取出来放源码出来了,看样子这里并不会存在受众。

说已经有现成开源工具的,不好意思,正是因为这些挺杂乱的,我真是很厌烦我要敲N个命令或者写个脚本,偶尔参数错误还会让我直接开不了机。我没必要再浪费精力在这些杂七杂八的事情上。

顺便提醒,既然猜测没开源的问题。我想说,我要想在你打包的boot.img塞个自启动的后门确实是个轻而易举的事情,但是不好意思,我没有这么做,这只是一个纯净的二进制工具罢了,但是因为涉及到部分私有代码,我选择做了些混淆。

最后于 2021-6-7 14:32 被RiDiN编辑 ,原因:
雪    币: 3799
活跃值: 活跃值 (502)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小流子 活跃值 2021-6-7 14:33
6
0
挺好的,会有人肯定你的付出
雪    币: 383
活跃值: 活跃值 (245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
a303266618 活跃值 2021-6-7 15:10
7
0
RiDiN 还有我说的是,是暂时没有开源并不代表不会,没人用我也就没必要费精力取出来放源码出来了,看样子这里并不会存在受众。说已经有现成开源工具的,不好意思,正是因为这些挺杂乱的,我真是很厌烦我要敲N个命令或者写 ...

yyds

最后于 2021-8-18 06:51 被a303266618编辑 ,原因:
雪    币: 352
活跃值: 活跃值 (812)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
abcz316 活跃值 2021-6-8 00:23
8
0
感觉magiskboot的源码已经写得够简洁明了了
雪    币: 383
活跃值: 活跃值 (245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
a303266618 活跃值 2021-6-8 11:20
9
0
abcz316 感觉magiskboot的源码已经写得够简洁明了了
膜拜大佬
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-7-7 17:02
10
0
已开源
雪    币: 636
活跃值: 活跃值 (274)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-7 21:37
11
0
有aosp编译环境的话,其实你需要的工具都有,似乎部分vendor比如三星会魔改layout,那还是得dig一下
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-7-8 10:09
12
0
Rprop 有aosp编译环境的话,其实你需要的工具都有,似乎部分vendor比如三星会魔改layout,那还是得dig一下
就是比较麻烦,一个AOSP大几十G,搞好了还是得一条一条敲。还有一个主要原因是,我是搞群控的,打算直接运行在手机adb, twrp 上的,这能大大给我减少复杂性以及难度,有些脚本类型的官方工具搞上去不太适合虽然直接移植个py3问题不大。
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-7-8 10:10
13
0
Rprop 有aosp编译环境的话,其实你需要的工具都有,似乎部分vendor比如三星会魔改layout,那还是得dig一下
也可能是我比较菜,对这个不太熟悉。
雪    币: 636
活跃值: 活跃值 (274)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-8 22:21
14
0
RiDiN 就是比较麻烦,一个AOSP大几十G,搞好了还是得一条一条敲。还有一个主要原因是,我是搞群控的,打算直接运行在手机adb, twrp 上的,这能大大给我减少复杂性以及难度,有些脚本类型的官方工具搞上去不 ...
Android 11的boot可能用了v3的header导致旧工具不兼容,github上有脱离aosp环境的mkbootimg,搜一下就出来了,可能对你适配11有帮助
雪    币: 110
活跃值: 活跃值 (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
异灵摆渡 活跃值 2021-7-9 11:00
15
0
作者的东西我看了,很多不错,目前市面上老的关于boot解包打包修改的工具过时了,会存在无法解包,或者刷完无法开机等现象,希望作者加一句,修改内核存在风险,风险自己承担。
雪    币: 110
活跃值: 活跃值 (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
异灵摆渡 活跃值 2021-7-9 11:03
16
0
目前最简单的修改内核的办法就是修改magisk源码,实现自己要修改的东西,然后利用magisk自动解包,修改,打包。但是这种是皮毛,不过就算是皮毛,网上相关的东西也是很少的。楼主的工具是有相当大的技术含量的。后面空了我准备测试。
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-7-13 11:55
17
0
Rprop 有aosp编译环境的话,其实你需要的工具都有,似乎部分vendor比如三星会魔改layout,那还是得dig一下
已测试,可以正常解包打包,不过手头无三星无法测试是否有效,目前看起来差别也就在 1: 没有 ramdisk(已已做兼容),2: 包含附加数据(一开始就已考虑),附加数据不属于标准格式所以不做兼容。
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-7-13 14:52
18
0
膜拜大佬
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-9-12 21:14
19
0
遇到个令人窒息的问题 boot.img解包再重打包后 体积会无缘无故变大 刷入时提示 size too large
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-9-12 21:21
20
0
无缘无故大了7M 不知道为啥
雪    币: 4553
活跃值: 活跃值 (1158)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
熊猫吃鱼 活跃值 2021-9-14 23:39
21
0
异灵摆渡 目前最简单的修改内核的办法就是修改magisk源码,实现自己要修改的东西,然后利用magisk自动解包,修改,打包。但是这种是皮毛,不过就算是皮毛,网上相关的东西也是很少的。楼主的工具是有相当大的技术 ...
你好 请问一下 magisk 如何修改内核?有对应的文章吗?
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-9-16 10:30
22
0
万里星河 无缘无故大了7M 不知道为啥
把问题镜像下载链接发给我
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-9-16 10:38
23
0
万里星河 遇到个令人窒息的问题 boot.img解包再重打包后 体积会无缘无故变大 刷入时提示 size too large
有可能的问题是,看输出日志是否存在 NOTICE: parse complete ... bytes left,这表示有一部分数据无法解析了。最后打包时会顺带把这部分打包进去。如果你是用系统包里直接取出来的 image,那么这是不正常的状况,把文件发给我看看。但是如果你使用 dd 之类的拉取 boot.img ,关于为何出现这种无法识别的附加数据,是因为你 dd 会把整个分区的数据拉下来,比如 Boot 分区大小为 64MB,你拉下来的文件就是 64MB,如果实际镜像的大小只有 28MB,那么正常情况下 28MB以后的区块都应该为 0,但是实际情况是,可能由于使用其他工具之类,导致28MB后的数据有那么7MB不是0,那么就有可能出现这种情况。我会尝试加入其他参数例如不打包这类未识别数据但是需要你的镜像确认一下问题。
雪    币: 17
活跃值: 活跃值 (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RiDiN 活跃值 2021-9-16 13:07
24
0

好了,已经加入了新参数不处理此多余的数据,在原本打包命令后加入 -e skip-unknown-data 即可,https://github.com/rev1si0n/bxxt/blob/master/README_zh.md#如何使用



最后于 2021-9-16 13:08 被RiDiN编辑 ,原因:
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-9-29 19:16
25
0
唉 安卓自身好像有校验 对randisk.img和system.img修改要么无效 要么卡屏
游客
登录 | 注册 方可回帖
返回