archlinux编辑修改img文件

挂载img文件到linux文件夹下

parted xxx.img

(parted) unit b

(parted) print 使用parted命令查看文件的分区情况

sudo mount -o loop,offset=46137344 imx6ull-lubancat-carp-console-armhf-2021-04-08.img ./dir_img/
把文件的指定分区挂载到dir_img文件夹下

sudo umount ./dir_img 取消挂载

挂载中涉及到的较详细的步骤以及解析(以三星为例)

解压得到的三星.zip刷机包 – 得到
BL_A505USQS3ASL4_CL16561534_QB27874851_REV00_user_low_ship.tar.md5

AP_A505USQS3ASL4_CL16561534_QB27874851_REV00_user_low_ship_meta_OS9.tar.md5

CP_A505USQS3ASL4_CP14622435_CL16561534_QB27874851_REV00_user_low_ship.tar.md5

HOME_CSC_OMC_OYN_A505UOYN3ASL4_CL16561534_QB27874851_REV00_user_low_ship.tar.md5

CSC_OMC_OYN_A505UOYN3ASL4_CL16561534_QB27874851_REV00_user_low_ship.tar.md5

USERDATA_CCT_A505USQS3ASL4_CL16561534_QB27874851_REV00_user_low_ship.tar.md5

用tar的解压命令,解压AP文件:
tar xvf AP_A505USQS…–.md5

把system.img.lz4文件解压

lz4 -d system.img.lz4

file system.img
file命令检查文件,可能会有以下结果:
system.img: Android sparse image, version: 1.0, Total of 1510400 4096-byte output blocks in 33 input chunks.

system.img: Linux rev 1.0 ext2 filesystem data, UUID=873a602a-a04c-5918-94d6-e1f574def67e (extents) (large files) (huge files)

上面两个比较常见,还有这种不常见:
VMS Alpha executable
类型分别为:ext 文件、raw 文件和yaffs2 文件。

ext文件

先用 simg2img 工具把 system.img 转为为 ext4 文件格式
再使用以下命令进行转换
simg2img system.img system_new.img 会得到一个 system_new.img,它是 raw 格式的完整镜像

yaffs2文件

unyaffs system.img

raw文件

可以直接挂载

挂载命令

sudo mount -t ext4 system_new.img system 把system_new.img挂载到创建的system文件夹下

ext文件和raw文件区别

raw 其特点是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大

ext 就是一个非常普通的dat文件。由于它将raw ext4进行稀疏描述,因此尺寸比较小(没有全零的无效填充区)

所以,我们只需要用脚本(simg2img),进行一次编译操作,就可以把ext文件编译、转换成raw文件了。

再次把修改好的system.img文件转换成原先的版本

sudo make_ext4fs -s -l 5120M -a system system.img.ext4 ~/workspace/myadb/sm/dir_img/ 使用make_ext4fs把挂载到dir_img目录下的所有文件制作成spare文件

-s:生成Spare格式的镜像

-l : 镜像的尺寸

-a: 指定挂载点,这里是system

-S file_contexts:表示sepolicy的file_contexts,5.0及以上安卓系统存在file_contexts文件,该文件是对selinux文件系统的说明,在手机root目录下能找到。

make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限

img2simg system_new.img system.imgsystem.img由raw文件转换成sparse文件

# lz4 system.img
lz4 -B6 --content-size system.img.ext4 system.img.ext4.lz4
使用lz4再次压缩system.img

tar -cf AP_G960U1UES9FUG2_CL21635681_QB41996425_REV01_user_low_ship_MULTI_CERT_meta_OS10.tar boot.img.lz4 recovery.img.lz4 vendor.img.ext4.lz4 system.img.ext4.lz4 persist.img.ext4.lz4 userdata.img.ext4.lz4 dqmdbg.img.ext4.lz4 meta-data/ 把原先解压出来的文件/文件夹重新压缩到.tar文件中

md5sum -b AP_G960U1UES4CSD4_CL15611914_QB23162251_REV01_user_low_ship_MULTI_CERT_meta_OS9.tar >> AP_G960U1UES4CSD4_CL15611914_QB23162251_REV01_user_low_ship_MULTI_CERT_meta_OS9.tar

-b: 二进制模式读取文件;

-t或–text: 把输入的文件作为文本文件看待;

-c: 从指定文件中读取MD5校验和,并进行校验;

–status: 验证成功时不输出任何信息;

-w: 当校验不正确时给出警告信息。

mv AP_G960U1UES4CSD4_CL15611914_QB23162251_REV01_user_low_ship_MULTI_CERT_meta_OS9.tar AP_G960U1UES4CSD4_CL15611914_QB23162251_REV01_user_low_ship_MULTI_CERT_meta_OS9.tar.md5

最后2步只是MD5校验,变成官方格式。可以忽略。


创建, 读取,修改img文件 (以ext4 为例)

1. 创建 (10M 空文件)

dd if=/dev/zero of=XXX.img bs=1024 count=10240

2. 格式化

-关联loop设备

sudo losetup /dev/loop1 XXX.img

-建立分区:

sudo fdisk /dev/loop1



-格式化

sudo mkfs -t ext4 /dev/loop1

-loop 设备卸载

sudo losetup -d /dev/loop1

-补充:

losetup -h 有对loop 命令的解释。

3. 修改 (挂载img)

mount -t ext4 -o loop XXX.img /mnt/img 然后就可以想修改什么就修改什么了


fastboot操作

进入fastboot界面

adb reboot fastboot
adb reboot bootloader
或者
同时按住 增加音量 和 电源 键开机

fastboot查看手机是否解锁

fastboot oem get-bootinfoor fastboot oem device-info

查看fastboot模式下的手机

fastboot devices

fastboot模式下重启手机

fastboot reboot

在设备进入到 fastboot 环境后,根据需求执行下面的命令进行刷机:

fastboot flashing unlock 设备解锁,开始刷机

fastboot flash boot boot.img 刷入 boot 分区。如果修改了 kernel 代码,则应该刷入此分区以生效

fastboot flash recovery recovery.img 刷入 recovery 分区

fastboot flash country country.img 刷入 country 分区。这个分区是开发组自己划分的,别的 Android 设备上不一定有

fastboot flash system system.img 刷入 system 分区。如果修改的代码会影响 out/system/ 路径下生成的文件,则应该刷入此分区以生效

fastboot flash bootloader bootloader 刷入 bootloader

fastboot erase frp 擦除 frp 分区,frp 即 Factory Reset Protection,用于防止用户信息在手机丢失后外泄

fastboot format data 格式化 data 分区

fastboot flashing lock 设备上锁,刷机完毕

fastboot continue 自动重启设备

三星手机开启开发者模式

设置 -> 关于手机 -> 软件信息 -> 连续点击 编译编号 7次 -> 已开启开发者模式

android的解锁/加锁

1.进入fastboot模式
adb reboot bootloader

2.解锁bootbloader
fastboot flashing unlock

3.加锁bootloader
fastboot flashing lock

Bootloader锁的解锁原理

在某处存放一个标志,标识有没有解锁,如果解锁了,就放开以上限制。存放这个标志的位置在解锁前第三方app是没有权限读写的,所以不可能绕过官方解锁流程。

正常的解锁过程一般跟电脑软件的注册码
实现原理相当,解锁软件根据手机硬件特征生成中间码,把中间码发给服务器,服务器进行某种加密传回来写入特定位置,bootloader会在这个位置检查解锁信息是否合法,合法就写入已解锁的标志,就可以刷入并加载第三方镜像了。解锁码的生成过程一般会用到非对称加密外加私有算法,几乎不可破解,即使拿到原代码也做不到。

解锁和上锁实质上是修改 /dev/block/steady 文件。

BootLoader启动链流程

PBL -> SBL(XBL) -> ABL
PBL 的主要功能是上电自检并启动下一个组件 SBL(Secondary Boot Loader)。这个 SBL 主要是初始化一些硬件环境(如DDR, clocks 和 USB 等)和代码安全环境 (TrustZone),当然,最重要的还是验证并加载下一个组件——ABL(Android Boot Loader,也叫 aboot)。

我们通常所说的解锁 BootLoader 特指让 ABL(aboot) 在加载 bootimage 时不进行验证。

三星手机拨号

*#197328640# 进入工程模式

检查img文件的块

tune2fs -l system.img | grep "Block size\\|Block count"得到块大小和计数

echo $((1553064 * 4096))将两个数相乘

从手机中获取镜像

adb shell "ls -l /dev/block/platform/*/*/by-name"查询分区的路径

开机状态:

adb shell su -c "dd if=/dev/block/mmcblk0p23" of=/sdcard/system.img

recovery模式:

adb shell "dd if=/dev/block/mmcblk0p23" of=/sdcard/system.img

手机使用magisk获取root权限

1 手机中安装magisk

2 获取手机中的boot.img

3 使用magisk修补boot.img文件

4 把boot.img刷入手机

手机无法启动的时候获取手机的日志

  1. 无法启动的时候,重启到recovery界面
  2. 获取/proc/last_kmsg文件,就是启动的日志文件
使用adb查看手机版本

adb shell "getprop | grep version"

使用adb给软件授予系统权限

adb shell pm grant com.morelocale.languages2 android.permission.CHANGE_CONFIGURATION

其他的一些刷机工具和方法

adb sideload

刷入一个支持adb sideload的recovry或者有的三星手机可以找到这个adb sideload的工具接口(整个方法的老旧性和实用性有待考量)
adb sideload 刷机包

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C墨羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值