#android #tool #bootimage

bin+lib android-bootimage

处理 Android 启动映像的工具。目前它仅适用于三星启动映像。

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年8月17日

#200 in #android

无许可证

30KB
564

android-bootimage

处理 Android 启动映像的工具。目前它仅适用于三星启动映像。

目录

构建

整个项目是用 Rust 编程语言编写的,并使用 cargo 构建。要编译程序,请安装 Rust 和 Cargo,然后简单地运行以下命令。二进制文件将随后在 ./target/release/android-bootimage 中可用。

git clone https://gitlab.com/binero/android-bootimage.git
cd android-bootimage
cargo build --release

它是如何工作的?

目前,该工具仅适用于基于三星的启动映像。三星使用与 Android 不同的图像格式来处理其图像。该工具可以解包这些启动映像,并且可以显示用户图像的组成。

解包

要解包映像,请使用以下命令

android-bootimage unpack boot.img --unpack-all

这将在命令执行的相对位置创建一个 boot/ 目录。在此目录中,您将找到启动映像每个分区的 SECTION.img。要更精确地控制要提取的文件和提取的位置,请传递 --help 标志。以下示例仅将内核提取到当前目录中的 zImage 文件中。

android-bootimage unpack boot.img --kernel ./zImage

某些设备的启动映像页面大小设置为 0。当这种情况发生时,工具无法提取启动映像,并将警告用户。如果用户知道页面大小,则可以使用 --page-size 参数传递它。页面大小通常是 2048 字节。

android-bootimage unpack boot.img --page-size 2048 --unpack-all

提取 ramdisk

作为最后的例子,我们将从启动映像文件中提取 ramdisk 并将其提取出来。

android-bootimage unpack boot.img --page-size 2048 --ramdisk ramdisk.img
mkdir ramdisk
cd ramdisk
gzip -dc < ../ramdisk.img | cpio -i

列出分区

要列出启动映像中的不同分区,请简单运行

android-bootimage secions boot.img

在未设置有效页面大小的平台上,它必须手动指定。通常它是 2048 字节。

android bootimage sections boot.img --page-size 2048

输出将类似于以下内容。请注意,空(大小为 0)分区未列出。

0x00000000 - header (size: 616 B)
0x00000800 - kernel (size: 5.31 MiB)
0x0054F000 - ramdisk (size: 4.48 MiB)
0x009C9800 - device_tree (size: 256 B)

未来工作

项目仍缺少一些重要功能。

  • 它不能创建启动映像。我正在积极努力确保将来可以实现这一功能。
  • 它不能处理非三星启动映像。

由于我只拥有两个三星设备(用于测试),我将无法使该程序适用于非三星设备。如果有人提供帮助,我将很高兴实现这一点。

依赖关系

~0.9–1.2MB
~12K SLoC