Android 解压和重新打包system.img

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1、获取system.img

以高通芯片手机为例,采用以下命令将system.img拷贝出来

dd if=/dev/block/platform/msm_sdcc.1/by-name/system of=/sdcard/system.img

/dev/block/platform/msm_sdcc.1/by-name 到这个目录下ls -al命令可以看到system其实是个链接文件,链接到/dev/block/mmcblk0p16  这个分区块,因此也可以使用一下命令:

dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/system.img


2、解压system.img

先用file命令查看system.img的文件类型

file system.img

system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (needs journal recovery) (extents) (large files)

采用挂载分区的方式来打开system.img文件

mount -t ext4 -o loop system.img  systemimg    //此命令的意思将system.img镜像文件挂载到systemimg目录

Andriod标准的文件结构就出来了,里面可以“随意”定制


3、重新打包system.img

打包命令:

./make_ext4fs   -l   1024M   -s   -a   system   system_new.img   systemimg

参数解析:1024M代表你要打包的system.img大小,这个值可以参考挂载前system.img的大小

"-a system",是指这个img用于android系统,挂载点是/system,使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限。system_new.img代表新生成的img

再次用file命令查看文件类型

file system_new.img

 system_new.img: data

跟之前的输出截然不同,这显然不是ext4文件类型,方法就是继续使用simg2img工具将其转换成真正的ext4文件

./simg2img system_new.img system_out.img

得到system_out.img

file system_out.img

system_out.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)

得到的img就是ext4,那么这个system_out.img就是我们重新打包生成的img了,这就可以烧到手机里面看看效果了。。。

PS:上面提到的make_ext4fs simg2img等工具在android环境的out/host/linux-x86/bin目录下。


教你从手机中提取system镜像制作线刷救砖包的简单方法 其实在制作刷机包的过程中,有时候没有官方或者第三方提供的救砖包(线刷),那怎么办?常规的方法有两种:(此处为常规方法,回读的方式暂不说明)     1.卡刷包转线刷包     2.dd命令导出分区镜像(需要ROOT权限) 本帖隐藏的内容方法一:卡刷包转线刷包正常的卡刷包解压打开有这样的文件: 其实很简单,参考教程:卡刷包转线刷包工具,新增支持6.0以上这样,就可以生成你想要的system.img... 阅读详情

相关推荐

Android system.img ext4格式

Android system.img镜像文件为sparse ext4 image格式, sparse header格式: typedef struct sparse_header { __le32 magic; /* 0xed26ff3a */ __le16 major_version; /* (0x1) - reject images with higher major versio...

osnet的博客 3167

解包打包android内核system.img文件所需工具

使用方法:http://blog.csdn.net/asmcvc/article/details/11770851 工具: unyaffs,mkyaffs2image 其中unyaffs有windows版本linux版本,mkyaffs2image只有linux版本。 windows版本的unyaffs用法: 把system.img复制到unyaffs的相同目录下,cmd命令下cd到unyaffs的目录下,然后执行命令:unyaffs system.img unyaffs会把system.img解压到其目录下。 linux版本的unyaffs用法: 把unyaffs复制到/usr/bin目录下,并修改权限为可执行。 然后cd到system.img目录下(假定目录为system目录),执行命令:unyaffs system.img 然后对system目录下的文件进行修改。 注意:修改完后的文件要修改一下权限,尽量其他文件的权限保持一致。例如:chmod 644 framework-res.apk mkyaffs2image用法: 复制到/usr/bin目录下,并修改权限为可执行。 这里以打包system目录为system.img为例,执行命令: mkyaffs2image system system.img 然后把新生成的system.img复制替换掉原:adt-bundle-windows-x86\sdk\system-images\android-17\armeabi-v7a\system.img 执行bat批处理命令启动模拟器: D:\adt-bundle-windows-x86\sdk\tools\emulator-arm.exe -avd AndroidVM -partition-size 128 这里以修改android系统启动画面为例: 打开解包目录下的\framework\framework-res.apk 替换图片:framework-res.apk\assets\images\android-logo-mask.png为下图: 然后对\framework\framework-res.apk文件重新签名,复制到linux下后修改文件权限原来一致。 然后mkyaffs2image system system.img打包生成新的system.img,替换原来的system.img,并启动模拟器,效果图如下: 修改代码: 工具:odextools(参考:《一键odex批量合并工具odextools的重新整理与使用》)、dexopt-wrapper 其中odextools.bat的代码: 批处理有一处bug:每打包一次会把odex文件删除掉,导致在后面的打包过程中会出现找不到:system/framework/core.odex类似的错误,因此只需要在打包完后不删除odex文件即可,找到del /f !apkx!.odex 1>nul 2>nul改为:::del /f !apkx!.odex 1>nul 2>nul,也就是注释掉这一行代码。 具体使用方法(操作在windows下): 在odextools\romdir目录下创建文件夹:system 利用unyaffs解包system.img后,把所有文件复制到system目录下。 然后运行odextools.bat,如图: 选择一个需要整合odex的目录选项即可。odextools.bat会自动设置环境变量,使用baksmali.jar来反编译odex为smali,然后再调用smali.jar打包为classes.dex, 然后再打包到相应的apk包(framework目录下对应的是jar后缀的,实际上也是个apk包),最后再重新签名。 如果要修改代码,则需要把上面重新打包生成的apk文件,利用常规方法反编译后修改smali代码,例如插桩输入log信息。然后再回编译并重新签名。 最后一步:因为system.img中的apk是优化过的,apk主目录下是没有classes.dex文件的,而是一个被优化过的odex文件,用于优化启动速度。 因此需要将修改后的apk包再用dexopt-wrapper优化apk包后生成出odex文件,然后删除apk包里的classes.dex,并在相同目录下放置与apk包同名的odex文件。 按照原system目录的文件结构组织好后,目录复制到linux环境下使用mkyaffs2image重新打包system.img

Android10-system.img-unpack:EMUI10 MIUI12 Flyme8 firmware unpack.Android system.img unpack repack on Windows10.Android 8以上 ROM解包工具)

Android10-system.img-unpack EMUI10 MIUI12 Flyme8 firmware unpack. Android system.img unpack repack on Windows10. Android 8以上 ROM解包工具 文件说明: 1.brotli:解压工具,用于将「system.new.dat.br」文件解压为「system.new.dat」 2.sdat2img:格式转换工具,用于将「system.new.dat」文件转换为ext4格式的「system.new.img」 3.SystemExtractor:解包工具,用于将「system.new.img」解包 引用说明: 本工具为一套组合使用工具,实测可在Win10系统上解包Android 8、Android 9、Android 10的ROM固件(包含EMUI10、MIUI12、Flyme

android系统备份----即提取system.imgboot.img的方法!(转载)

原文链接:http://bbs.gfan.com/android-1512372-1-1.html 操作条件: 1.安装好手机的USB驱动 2.需要root权限 3.adb环境 正式开始提取: 1.解压adbs,放到任意目录下,比如放到C盘根目录下 2.在windows下打开cmd命令行,进入到adbs目录下,即C:\adbs> 3.在当前光标下输入adb devices,回车

longdaxia的专栏 2万+

电脑linux系统连接手机系统文件,我来教你简单几步提取自己手机系统固件system.img文件-img文件...

我来教你简单几步提取自己手机系统固件system.img文件注意:在打包system.img时手机要连接电脑上并打开《USB调试》模式,安装好驱动等必要的准备,手机先获取ROOT权限,这样才能打包成功。第一步:电脑安装《刷机精灵》。1.安装好《刷机精灵》软件打开进入《命令窗口》。01第二步:查看手机分区确认手机连接电脑成功,注意手机要先连接电脑并打开《USB调试》模式再输入下面的命令,不然输入命...

weixin_33487490的博客 1463

Android解压/重新打包system.img(七十三)

【代码】Android解压/重新打包system.img(七十三)

Android系统攻城狮 8396

Android 系统(139)---Android 解压重新打包system.img

Android 解压重新打包system.img开始我们的工作前,请记住,Linux一定要学会用file命令分析文件类型,这样才好入手,否则错了都不知道怎么回事!!!1、解压system.img先用file命令查看system.img的文件类型file system.img system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc...

zhangbijun1230的专栏 3269

linux将文件夹打包img,Android 解压重新打包system.img

开始我们的工作前,请记住,Linux一定要学会用file命令分析文件类型,这样才好入手,否则错了都不知道怎么回事!!!1、解压system.img先用file命令查看system.img的文件类型file system.imgsystem.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f2...

weixin_35512156的博客 2204

system.img打包解压

1、解压system.img 先用file命令查看system.img的文件类型 ronny@ronny:~/tmp$ file system.img system.img: data 我还没用simg2img转换 ronny@ronny:~/tools/simg2img system.img s.img 然后再用file命令 ronny@ronny:~/tmp$ file s.img s...

fengjinghuanian的博客 3830

解压打包android system.img

android4.0之后,system.img文件格式为ext4,如果需要修改system.img文件,该如何做:   1.ubuntu系统,准备工具make_ext4fs、simg2img、mkusering.sh。     make_ext4fs、simg2img、mkusering.sh这三个工具可以在源码编译之后的 out/host/linux_x86/bin目录下获取,并将这三个命令

霜只哀伤的专栏 3315

android源码编译生成ramdisk.imgsystem.img解压使用

bin.tar.gz里有simg2imgmake_ext4fs两个工具。 一、解压打包system.img ./simg2img system.img system.img.ext4 生成ext4格式的文件 新建tmp文件,mount -t ext4 -o loop system.img.ext4 tmp/ 这样就可以在tmp中对system系统镜像做修改了。 ./make_ext4f

pkigavin的专栏 3651

Android 镜像文件制作 【ramdisk.img system.img userdata.img

Android项目生成的镜像文件包括ramdisk.img, system.img, userdata.img ramdisk.img 是out/target/product/项目名/root 目录经过打包压缩而成; system.img是out/target/product/项目名/system目录打包压缩而成; userdata.img是out/target/product/项目名/data

3935

解压打包android system.img (2)

android4.0之后,system.img文件格式为ext4,如果需要修改system.img文件,该如何解压打包.img文件:   1.ubuntu系统,准备工具make_ext4fs、simg2img、mkusering.sh。     make_ext4fs、simg2img、mkusering.sh这三个工具可以在源码编译之后的 out/host/linux_x86/bin目录下获

zangcf的专栏 3840

解压打包system.img

一、在(your android code path)/out/ 目录里查找这个工具  unyaffs: 用于解压system.img mkyaffs2image: 用于打包system.img 呵呵, find 命令肯定会吧?  find out/ -name mkyaffs2image 找到了后,记住这个目录. 我的是(codePATH)/out/host

lmf0421的专栏 2169
上一篇: Complete Setup Guide for Android SDK / ADT Bundle on Ubuntu
下一篇: 遍历获取目录所有文件的md5
cs2587
博客等级 码龄15年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值