adb的强大之处在于可以在PC端直接操控手机,可以说是通用的工具!那么今天带来的这款工具的强大,估计会让爱好者灰常之兴奋,用好这款工具你就可以动手修改boot.img了,而不是简简单单的精简ROM或者美化美化加加字体等每个人都可以完成的工作!
个人常用功能
1、解包/打包boot.img/recovery.img
2、解包/打包ramdisk
3、解包data/system.img
4、解密/生成rle加密图片(开机第二屏图片,不是开机动画哦)
另外:还支持解包updata.app(本人未用过)
背景知识
一、Android手机的文件系统 Android手机的文件系统有许多存储器组成,以下是在adb shell下面的输出:
1 cat/proc/mtd
注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的操作中选择正确的设备号(mtdX,这个X的序号一定要检查清楚)。 根目录以及分区的定义(在Android源代码的root.c文件中定义)
根目录: | Linux 块设备 | /挂载点/ | 文件系统 | 大小 | 描述 |
BOOT: | /dev/mtdblock[?] | / | (RAM) | Raw | 内核、内存盘和引导配置。 |
DATA: | /dev/mtdblock5 | /data/ | yaffs2 | 91904kb | 用户、系统配置,软件配置以及软件(没有a2sd的话) |
CACHE: | /dev/mtdblock4 | /cache/ | yaffs2 | 30720kb | OTA缓存,recovery/更新配置及临时文件夹 |
MISC: | /dev/mtdblock[?] | N/A | | Raw,[?]kb | (等待添加) |
PACKAGE: | (相对于刷机包) | N/A | | | 刷机包的伪文件系统。 |
RECOVERY: | /dev/mtdblock[?] | / | (RAM) | Raw,[?]kb | recovery和更新环境的内核和内存盘。类似于BOOT:。 |
SDCARD: | /dev/mmcblk0(p1) | /sdcard/ | fat32 | 32MB-32GB | TF卡。通常刷机包就放在这里。 |
SYSTEM: | /dev/mtdblock3 | /system/ | yaffs2 | 92160kb | 系统分区,静态且是只读的。 |
TMP: | | /tmp/ | (RAM) | 标准的Linux临时文件夹 | 在关机/重启时清空。 |
您首先应该要做的事情是使用您的recovery对您的ROM进行备份,以免操作失误照成数据的丢失!
二、boot和recovery映像的文件结构
boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。
/*
** +-----------------+
** | boot header | 1 page
** +-----------------+
** | kernel | n pages
** +-----------------+
** | ramdisk | m pages
** +-----------------+
** | second stage | o pages
** +-----------------+
**
** n = (kernel_size + page_size - 1) / page_size
** m = (ramdisk_size + page_size - 1) / page_size
** o = (second_size + page_size - 1) / page_size
**
** 0. all entities are page_size aligned in flash
** 1. kernel and ramdisk are required (size != 0)
** 2. second is optional (second_size == 0 -> no second)
** 3. load each element (kernel, ramdisk, second) at
** the specified physical address (kernel_addr, etc)
** 4. prepare tags at tag_addr. kernel_args[] is
** appended to the kernel commandline in the tags.
** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr
** 6. if second_size != 0: jump to second_addr
** else: jump to kernel_addr
*/
boot的ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。
以下是一个典型的ramdisk中包含的文件目录列表:
│ default.prop
│ init
│ init.goldfish.rc
│ init.rc
│ init.swift.rc
│ initlogo.rle //开机第二屏图片
│ ueventd.goldfish.rc
│ ueventd.rc
│ ueventd.swift.rc
│
├─data
├─dev
├─proc
├─sbin
│ adbd
│
├─sys
└─system
recovery的ramdisk映像包含了一些额外的文件,例如一个叫做recovery的二进制程序,以及一些对该程序支持性的资源图片文件(当您按下home+power组合键的时候就会运行这个recovery程序)。
典型的文件列表如下:
│ default.prop
│ init
│ init.rc
│ initlogo.rle //开机第二屏图片
│ ueventd.goldfish.rc
│ ueventd.rc
│ ueventd.swift.rc
│
├─data
├─dev
├─etc
│ recovery.fstab
│
├─proc
├─res
│ │ keys
│ │
│ └─images
│ icon_clockwork.png
│ icon_error.png
│ icon_installing.png
│ indeterminate1.png
│ indeterminate2.png
│ indeterminate3.png
│ indeterminate4.png
│ indeterminate5.png
│ indeterminate6.png
│ progress_empty.png
│ progress_fill.png
│
├─sbin
│ adbd
│ e2fsck
│ fix_permissions
│ killrecovery.sh
│ mke2fs
│ nandroid-md5.sh
│ parted
│ recovery
│ sdparted
│ tune2fs
│
├─sys
├─system
│ └─bin
└─tmp
三、system系统镜像的文件结构
\\system\\app
这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\\data\\文件夹中。下面是详细的介绍:
\\system\\app\\AlarmClock.apk 闹钟 \\system\\app\\AlarmClock.odex
\\system\\app\\Browser.apk 浏览器 \\system\\app\\Browser.odex
\\system\\app\\Bugreport.apk Bug报告 \\system\\app\\Bugreport.odex
\\system\\app\\Calculator.apk 计算器 \\system\\app\\Calculator.odex
\\system\\app\\Calendar.apk 日历 \\system\\app\\Calendar.odex
\\system\\app\\CalendarProvider.apk 日历提供
\\system\\app\\CalendarProvider.odex \\system\\app\\Camera.apk 照相机
\\system\\app\\Camera.odex \\system\\app\\com.amazon.mp3.apk 亚马逊音乐 \\system\\app\\Contacts.apk 联系人 \\system\\app\\Contacts.odex
\\system\\app\\DownloadProvider.apk 下载提供
\\system\\app\\DownloadProvider.odex \\system\\app\\DrmProvider.apk DRM数字版权提供 \\system\\app\\DrmProvider.odex \\system\\app\\Email.apk 电子邮件客户端 \\system\\app\\Email.odex
\\system\\app\\FieldTest.apk 测试程序 \\system\\app\\FieldTest.odex
\\system\\app\\GDataFeedsProvider.apk GoogleData提供
\\system\\app\\GDataFeedsProvider.odex \\system\\app\\Gmail.apk Gmail电子邮件 \\system\\app\\Gmail.odex \\system\\app\\GmailProvider.apk Gmail提供 \\system\\app\\GmailProvider.odex \\system\\app\\GoogleApps.apk 谷歌程序包 \\system\\app\\GoogleApps.odex \\system\\app\\GoogleSearch.apk 搜索工具 \\system\\app\\GoogleSearch.odex \\system\\app\\gtalkservice.apk GTalk服务 \\system\\app\\gtalkservice.odex \\system\\app\\HTMLViewer.apk HTML查看器 \\system\\app\\HTMLViewer.odex \\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通 \\system\\app\\ImCredentialProvider.apk
\\system\\app\\ImProvider.apk \\system\\app\\ImProvider.odex
\\system\\app\\Launcher.apk 启动加载器 \\system\\app\\Launcher.odex
\\system\\app\\Maps.apk 电子地图 \\system\\app\\Maps.odex
\\system\\app\\MediaProvider.apk 多媒体播放提供
\\system\\app\\MediaProvider.odex \\system\\app\\Mms.apk 短信、彩信
\\system\\app\\Mms.odex \\system\\app\\Music.apk 音乐播放器
\\system\\app\\Music.odex \\system\\app\\MyFaves.apk T-Mobile MyFaves程序
\\system\\app\\MyFaves.odex \\system\\app\\PackageInstaller.apk apk安装程序
\\system\\app\\PackageInstaller.odex \\system\\app\\Phone.apk 电话拨号器 \\system\\app\\Phone.odex
\\system\\app\\Settings.apk 系统设置 \\system\\app\\Settings.odex
\\system\\app\\SettingsProvider.apk 设置提供
\\system\\app\\SettingsProvider.odex \\system\\app\\SetupWizard.apk 设置向导
\\system\\app\\SetupWizard.odex \\system\\app\\SoundRecorder.apk 录音工具
\\system\\app\\SoundRecorder.odex \\system\\app\\Street.apk 街景地图
\\system\\app\\Street.odex \\system\\app\\Sync.apk 同步程序
\\system\\app\\Sync.odex \\system\\app\\Talk.apk 语音程序
\\system\\app\\Talk.odex \\system\\app\\TelephonyProvider.apk 电话提供
\\system\\app\\TelephonyProvider.odex \\system\\app\\Updater.apk 更新程序
\\system\\app\\Updater.odex \\system\\app\\Vending.apk 制造商信息
\\system\\app\\Vending.odex \\system\\app\\VoiceDialer.apk 语音拨号器
\\system\\app\\VoiceDialer.odex \\system\\app\\YouTube.apk Youtube视频
\\system\\app\\YouTube.odex
\\system\\bin
这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍: \\system\\bin\\akmd
\\system\\bin\\am \\system\\bin\\app_process 系统进程
\\system\\bin\\dalvikvm Dalvik虚拟机宿主 \\system\\bin\\dbus-daemon 系统BUS总线监控
\\system\\bin\\debuggerd 调试器 \\system\\bin\\debug_tool 调试工具
\\system\\bin\\dexopt DEX选项 \\system\\bin\\dhcpcd DHCP服务器
\\system\\bin\\dumpstate 状态抓取器 \\system\\bin\\dumpsys 系统抓取器
\\system\\bin\\dvz \\system\\bin\\fillup \\system\\bin\\flash_image 闪存映像 \\system\\bin\\hciattach \\system\\bin\\hcid HCID内核
\\system\\bin\\hostapd \\system\\bin\\hostapd_cli
\\system\\bin\\htclogkernel \\system\\bin\\input
\\system\\bin\\installd \\system\\bin\\itr \\system\\bin\\linker
\\system\\bin\\logcat Logcat日志打印 \\system\\bin\\logwrapper
\\system\\bin\\mediaserver \\system\\bin\\monkey
\\system\\bin\\mountd 存储挂载器 \\system\\bin\\netcfg 网络设置 \\system\\bin\\ping Ping程序 \\system\\bin\\playmp3 MP3播放器 \\system\\bin\\pm 包管理器 \\system\\bin\\qemud QEMU虚拟机
\\system\\bin\\radiooptions 无线选项 \\system\\bin\\rild RIL组件
\\system\\bin\\sdptool \\system\\bin\\sdutil \\system\\bin\\service
\\system\\bin\\servicemanager 服务管理器 \\system\\bin\\sh
\\system\\bin\\ssltest SSL测试 \\system\\bin\\surfaceflinger 触摸感应驱动
\\system\\bin\\svc 服务 \\system\\bin\\system_server
\\system\\bin\\telnetd Telnet组件 \\system\\bin\\toolbox
\\system\\bin\\wlan_loader \\system\\bin\\wpa_cli
\\system\\bin\\wpa_supplicant
\\system\\etc
从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。
\\system\\etc\\apns-conf.xml APN接入点配置文件 \\system\\etc\\AudioFilter.csv 音频过滤器配置文件 \\system\\etc\\AudioPara4.csv \\system\\etc\\bookmarks.xml 书签数据库 \\system\\etc\\dbus.conf 总线监视配置文件 \\system\\etc\\dhcpcd
\\system\\etc\\event-log-tags \\system\\etc\\favorites.xml 收藏夹
\\system\\etc\\firmware 固件信息 \\system\\etc\\gps.conf GPS设置文件
\\system\\etc\\hcid.conf内核HCID配置文件 \\system\\etc\\hosts 网络DNS缓存
\\system\\etc\\init.goldfish.sh \\system\\etc\\location 定位相关
\\system\\etc\\mountd.conf 存储挂载配置文件 \\system\\etc\\NOTICE.html 提示网页
\\system\\etc\\permissions.xml 权限许可 \\system\\etc\\pvplayer.conf
\\system\\etc\\security \\system\\etc\\wifi WLAN相关组件
\\system\\etc\\dhcpcd\\dhcpcd-hooks
\\system\\etc\\dhcpcd\\dhcpcd-run-hooks
\\system\\etc\\dhcpcd\\dhcpcd.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\01-test
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\20-dns.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\95-configured
\\system\\etc\\firmware\\brf6300.bin \\system\\etc\\location\\gps
\\system\\etc\\location\\gps\\location 定位相关
\\system\\etc\\location\\gps\\nmea GPS数据解析
\\system\\etc\\location\\gps\\properties
\\system\\etc\\security\\cacerts.bks
\\system\\etc\\security\\otacerts.zip OTA下载验证
\\system\\etc\\wifi\\Fw1251r1c.bin \\system\\etc\\wifi\\tiwlan.ini
\\system\\etc\\wifi\\wpa_supplicant.conf WPA验证组件
\\system\\fonts
字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小
\\system\\fonts\\DroidSans-Bold.ttf \\system\\fonts\\DroidSans.ttf
\\system\\fonts\\DroidSansFallback.ttf
\\system\\fonts\\DroidSansMono.ttf \\system\\fonts\\DroidSerif-Bold.ttf
\\system\\fonts\\DroidSerif-BoldItalic.ttf
\\system\\fonts\\DroidSerif-Italic.ttf
\\system\\fonts\\DroidSerif-Regular.ttf
\\system\\framework
framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。
\\system\\framework\\am.jar \\system\\framework\\am.odex
\\system\\framework\\android.awt.jar AWT库 \\system\\framework\\android.awt.odex
\\system\\framework\\android.policy.jar
\\system\\framework\\android.policy.odex
\\system\\framework\\android.test.runner.jar
\\system\\framework\\android.test.runner.odex
\\system\\framework\\com.google.android.gtalkservice.jar GTalk服务
\\system\\framework\\com.google.android.gtalkservice.odex
\\system\\framework\\com.google.android.maps.jar 电子地图库
\\system\\framework\\com.google.android.maps.odex
\\system\\framework\\core.jar 核心库,启动桌面时首先加载这个
\\system\\framework\\core.odex \\system\\framework\\ext.jar
\\system\\framework\\ext.odex \\system\\framework\\framework-res.apk
\\system\\framework\\framework-tests.jar
\\system\\framework\\framework-tests.odex
\\system\\framework\\framework.jar \\system\\framework\\framework.odex
\\system\\framework\\input.jar 输入库 \\system\\framework\\input.odex
\\system\\framework\\itr.jar \\system\\framework\\itr.odex
\\system\\framework\\monkey.jar \\system\\framework\\monkey.odex
\\system\\framework\\pm.jar 包管理库 \\system\\framework\\pm.odex
\\system\\framework\\services.jar \\system\\framework\\services.odex
\\system\\framework\\ssltest.jar \\system\\framework\\ssltest.odex
\\system\\framework\\svc.jar 系统服务 \\system\\framework\\svc.odex
\\system\\lib
lib目录中存放的主要是系统底层库,如平台运行时库。 \\system\\lib\\libaes.so
\\system\\lib\\libagl.so \\system\\lib\\libandroid_runtime.so Android运行时库 \\system\\lib\\libandroid_servers.so 系统服务组件
\\system\\lib\\libaudio.so 音频处理 \\system\\lib\\libaudioeq.so EQ均衡器
\\system\\lib\\libaudioflinger.so 音频过滤器 \\system\\lib\\libbluetooth.so 蓝牙组件 \\system\\lib\\libc.so \\system\\lib\\libcamera.so 超相机组件
\\system\\lib\\libcameraservice.so \\system\\lib\\libcorecg.so
\\system\\lib\\libcrypto.so 加密组件 \\system\\lib\\libctest.so
\\system\\lib\\libcutils.so \\system\\lib\\libdbus.so
\\system\\lib\\libdl.so \\system\\lib\\libdrm1.so DRM解析库
\\system\\lib\\libdrm1_jni.so \\system\\lib\\libdvm.so
\\system\\lib\\libexif.so \\system\\lib\\libexpat.so
\\system\\lib\\libFFTEm.so \\system\\lib\\libGLES_CM.so
\\system\\lib\\libgps.so \\system\\lib\\libhardware.so
\\system\\lib\\libhgl.so \\system\\lib\\libhtc_ril.so
\\system\\lib\\libicudata.so \\system\\lib\\libicui18n.so
\\system\\lib\\libicuuc.so \\system\\lib\\liblog.so
\\system\\lib\\libm.so \\system\\lib\\libmedia.so
\\system\\lib\\libmediaplayerservice.so \\system\\lib\\libmedia_jni.so
\\system\\lib\\libnativehelper.so \\system\\lib\\libnetutils.so
\\system\\lib\\libOmxCore.so \\system\\lib\\libOmxH264Dec.so
\\system\\lib\\libpixelflinger.so \\system\\lib\\libpvasf.so
\\system\\lib\\libpvasfreg.so \\system\\lib\\libpvauthor.so
\\system\\lib\\libpvcommon.so \\system\\lib\\libpvdownload.so
\\system\\lib\\libpvdownloadreg.so \\system\\lib\\libpvmp4.so
\\system\\lib\\libpvmp4reg.so \\system\\lib\\libpvnet_support.so
\\system\\lib\\libpvplayer.so \\system\\lib\\libpvrtsp.so
\\system\\lib\\libpvrtspreg.so \\system\\lib\\libqcamera.so
\\system\\lib\\libreference-ril.so \\system\\lib\\libril.so
\\system\\lib\\librpc.so \\system\\lib\\libsgl.so
\\system\\lib\\libsonivox.so \\system\\lib\\libsoundpool.so
\\system\\lib\\libsqlite.so \\system\\lib\\libssl.so
\\system\\lib\\libstdc++.so \\system\\lib\\libsurfaceflinger.so
\\system\\lib\\libsystem_server.so \\system\\lib\\libthread_db.so
\\system\\lib\\libUAPI_jni.so \\system\\lib\\libui.so
\\system\\lib\\libutils.so \\system\\lib\\libvorbisidec.so
\\system\\lib\\libwbxml.so \\system\\lib\\libwbxml_jni.so
\\system\\lib\\libwebcore.so \\system\\lib\\libwpa_client.so
\\system\\lib\\libxml2wbxml.so \\system\\lib\\libz.so
\\system\\lib\\modules \\system\\lib\\modules\\wlan.ko
\\system\\media
铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音 \\system\\media\\audio
\\system\\media\\audio\\alarms 闹铃音 \\system\\media\\audio\\notifications 提示音 \\system\\media\\audio\\ringtones 铃声 \\system\\media\\audio\\ui 界面操作事件音 \\system\\media\\audio\\alarms\\Alarm_Beep_01.ogg
\\system\\media\\audio\\alarms\\Alarm_Beep_02.ogg
\\system\\media\\audio\\alarms\\Alarm_Beep_03.ogg
\\system\\media\\audio\\alarms\\Alarm_Buzzer.ogg
\\system\\media\\audio\\alarms\\Alarm_Classic.ogg
\\system\\media\\audio\\alarms\\Alarm_Rooster_02.ogg
\\system\\media\\audio\\notifications\\Beat_Box_Android.ogg
\\system\\media\\audio\\notifications\\CaffeineSnake.ogg
\\system\\media\\audio\\notifications\\DearDeer.ogg
\\system\\media\\audio\\notifications\\DontPanic.ogg
\\system\\media\\audio\\notifications\\F1_MissedCall.ogg
\\system\\media\\audio\\notifications\\F1_New_MMS.ogg
\\system\\media\\audio\\notifications\\F1_New_SMS.ogg
\\system\\media\\audio\\notifications\\Heaven.ogg
\\system\\media\\audio\\notifications\\Highwire.ogg
\\system\\media\\audio\\notifications\\KzurbSonar.ogg
\\system\\media\\audio\\notifications\\OnTheHunt.ogg
\\system\\media\\audio\\notifications\\TaDa.ogg
\\system\\media\\audio\\notifications\\Tinkerbell.ogg
\\system\\media\\audio\\notifications\\Voila.ogg
\\system\\media\\audio\\ringtones\\BeatPlucker.ogg
\\system\\media\\audio\\ringtones\\BentleyDubs.ogg
\\system\\media\\audio\\ringtones\\BirdLoop.ogg
\\system\\media\\audio\\ringtones\\CaribbeanIce.ogg
\\system\\media\\audio\\ringtones\\CrazyDream.ogg
\\system\\media\\audio\\ringtones\\CurveBall.ogg
\\system\\media\\audio\\ringtones\\DreamTheme.ogg
\\system\\media\\audio\\ringtones\\EtherShake.ogg
\\system\\media\\audio\\ringtones\\FriendlyGhost.ogg
\\system\\media\\audio\\ringtones\\GameOverGuitar.ogg
\\system\\media\\audio\\ringtones\\Growl.ogg
\\system\\media\\audio\\ringtones\\InsertCoin.ogg
\\system\\media\\audio\\ringtones\\LoopyLounge.ogg
\\system\\media\\audio\\ringtones\\LoveFlute.ogg
\\system\\media\\audio\\ringtones\\MidEvilJaunt.ogg
\\system\\media\\audio\\ringtones\\MildlyAlarming.ogg
\\system\\media\\audio\\ringtones\\NewPlayer.ogg
\\system\\media\\audio\\ringtones\\Noises1.ogg
\\system\\media\\audio\\ringtones\\Noises2.ogg
\\system\\media\\audio\\ringtones\\Noises3.ogg
\\system\\media\\audio\\ringtones\\OrganDub.ogg
\\system\\media\\audio\\ringtones\\Ring_Classic_02.ogg
\\system\\media\\audio\\ringtones\\Ring_Digital_02.ogg
\\system\\media\\audio\\ringtones\\Ring_Synth_02.ogg
\\system\\media\\audio\\ringtones\\Ring_Synth_04.ogg
\\system\\media\\audio\\ringtones\\RomancingTheTone.ogg
\\system\\media\\audio\\ringtones\\SitarVsSitar.ogg
\\system\\media\\audio\\ringtones\\SpringyJalopy.ogg
\\system\\media\\audio\\ringtones\\T-Jingle.ogg
\\system\\media\\audio\\ringtones\\Terminated.ogg
\\system\\media\\audio\\ringtones\\TwirlAway.ogg
\\system\\media\\audio\\ringtones\\VeryAlarmed.ogg
\\system\\media\\audio\\ringtones\\World.ogg
\\system\\media\\audio\\ui\\Effect_Tick.ogg
\\system\\sounds
默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。
\\system\\sounds\\test.mid
\\system\\usr
用户文件夹,包含共享、键盘布局、时间区域文件等。 \\system\\usr\\keychars
\\system\\usr\\keylayout \\system\\usr\\share \\system\\usr\\srec
\\system\\usr\\keychars\\qwerty.kcm.bin
\\system\\usr\\keychars\\qwerty2.kcm.bin
\\system\\usr\\keychars\\trout-keypad-qwertz.kcm.bin
\\system\\usr\\keychars\\trout-keypad-v2.kcm.bin
\\system\\usr\\keychars\\trout-keypad-v3.kcm.bin
\\system\\usr\\keychars\\trout-keypad.kcm.bin
\\system\\usr\\keylayout\\h2w_headset.kl
\\system\\usr\\keylayout\\qwerty.kl
\\system\\usr\\keylayout\\trout-keypad-qwertz.kl
\\system\\usr\\keylayout\\trout-keypad-v2.kl
\\system\\usr\\keylayout\\trout-keypad-v3.kl
\\system\\usr\\keylayout\\trout-keypad.kl \\system\\usr\\share\\bsk
\\system\\usr\\share\\zoneinfo
\\system\\usr\\share\\bsk\\V_FD_speed_101.bsk
\\system\\usr\\share\\bsk\\V_FD_std_101.bsk
\\system\\usr\\share\\zoneinfo\\zoneinfo.dat
\\system\\usr\\share\\zoneinfo\\zoneinfo.idx \\system\\usr\\srec\\config
\\system\\usr\\srec\\config\\en.us
\\system\\usr\\srec\\config\\en.us\\baseline.par
\\system\\usr\\srec\\config\\en.us\\baseline11k.par
\\system\\usr\\srec\\config\\en.us\\baseline8k.par
\\system\\usr\\srec\\config\\en.us\\dictionary
\\system\\usr\\srec\\config\\en.us\\g2p
\\system\\usr\\srec\\config\\en.us\\grammars
\\system\\usr\\srec\\config\\en.us\\models
\\system\\usr\\srec\\config\\en.us\\dictionary\\basic.ok
\\system\\usr\\srec\\config\\en.us\\dictionary\\cmu6plus.ok.zip
\\system\\usr\\srec\\config\\en.us\\dictionary\\enroll.ok
\\system\\usr\\srec\\config\\en.us\\g2p\\en-US-ttp.data
\\system\\usr\\srec\\config\\en.us\\grammars\\VoiceDialer.g2g
\\system\\usr\\srec\\config\\en.us\\models\\generic.swiarb
\\system\\usr\\srec\\config\\en.us\\models\\generic11.lda
\\system\\usr\\srec\\config\\en.us\\models\\generic11_f.swimdl
\\system\\usr\\srec\\config\\en.us\\models\\generic11_m.swimdl
\\system\\usr\\srec\\config\\en.us\\models\\generic8.lda
\\system\\usr\\srec\\config\\en.us\\models\\generic8_f.swimdl
\\system\\usr\\srec\\config\\en.us\\models\\generic8_m.swimdl
使用方法
工具主要语言为python,分两处版本,源文件 bootimg.py.gz (7.11 KB) 及windows下可执行文件exe bootimg.exe.gz (2.27 MB) ,内容及用法完全一致。
运行方法: 在cmd下cd到文件所在目录,输入"bootimg.exe 功能 [参数]"(用源文件的话就是bootimg.py)
目前支持以下功能:
--repack-ramdisk 生成 ramdisk
--unpack-ramdisk 解开 ramdisk
--repack-bootimg 生成 bootimg (包括boot.img及recovery.img)
--unpack-bootimg 解开 bootimg (包括boot.img及recovery.img)
--unpack-updata 解开 updata.app
--unpack-yafffs 解开 yafffs (包括data.img及system.img)
下面一一说明功能中的参数。
--unpack-updata [文件]
[文件]为空时,默认使用UPDATA.APP
解开后,会有四个文件,boot.img, recovery.img, system.img, userdata.img
这些都是刷机时可能需要的。
--unpack-bootimg [文件]
[文件]为空时,默认使用boot.img
解开后,会有两个文件,kernel和ramdisk.gz 同时,注意输出,比如base, cmdline, name等等
--repack-bootimg [base] [cmdline]
[base]为空时,使用0x200000
[cmdline]为空时,使用mem=211 console=null androidboot.hardware=qcom
生成bootimg时,会使用kernel和ramdisk.gz(如果存在ramdisk.cpio.gz,优先使用),生成boot.img
更新:
--repack-bootimg [base] [cmdline] [page_size] [padding_header] [padding_kernel] [padding_ramdisk]
具体的参数请在注意unpack时的原始参数。
--unpack-ramdisk [文件] [目录]
[文件]为空时,使用ramdisk.gz
[目录]为空时,使用initrd, (请保证这个目录不存在)
输出:cpiolist.txt, initrd目录下的文件
--repack-ramdisk [cpiolist]
[cpiolist]为空时,读取cpiolist.txt 根据cpiolist.txt生成ramdisk.cpio.gz cpiolist.txt格式
1). 文件 file 目标系统路径 当前系统路径 目标系统权限
2). 目录 dir 目录系统路径 目录系统权限
3). 软链接 slink 目录系统路径 链接路径 目标系统权限
--unpack-yafffs [文件] [目录]
[文件]为空时,使用userdata.img (呃,这个比system.img小)
[目录]为空时,使用文件除.img外的其它内容,比如userdata.img时使用userdata
ps:这些参数就算看不懂也没关系,可以不用加参数,直接用默认的就行,如解包updata.app的话就输入bootimg --unpack-updata就好。
实例一、轻松一拖修改开机第二屏(开机动画之前的那一屏)
简单介绍
我在上面的背景知识中有提到,开动第二屏的图片是initlogo.rle,所以我们要做的事情很简单,就是把这张图片替换掉,但是问题也来了,rle加密的图片必须经过处理才行,嘿嘿,这款工具已经给我们提供了解决办法!首先弄一张符合自己手机尺寸的png24格式图片(PHOTOSHOP中打开图片——文件——存储为WEB格式——类型——PNG24——存储),然后再将图片转换为rle格式,命名为initlogo.rle,解包boot.img替换同名文件,再打包刷入手机即可!当然对于一个懒人来说,每次都这样的话太麻烦,所以本人自己写了一个脚本,只需轻松一拖即可完成替换(boot.img和recovery.img都可!)
使用下面的脚本首先您要确保自己已安装好fastboot驱动,其次你必须确认你的开机图片文件名为initlogo.rle如果不是,请自行修改,一般来说CM的ROM应该都行的!
脚本内容
1 @echo off
2 title 修改小5开机第一屏
3 COLOR 0A
4 SET /P MENU=确认输入y回车继续,否则将退出:)
5 if %MENU% NEQ y exit
6 cls
7 %~d0
8 cd "%~dp0"
9 if exist "boot.img" (
10 goto replace
11 ) else goto quit
12 :replace
13 echo 正在生成initlogo.rle
14 bootimg --repack-rle "%~f1"
15 del /Q logo.raw
16 ren logo.rle initlogo.rle
17 if exist ./initrd/ rmdir /S /Q initrd > nul
18 if exist boot.img.back del /Q boot.img.back
19 echo ......
20 echo 正在解开boot.img
21 bootimg --unpack-bootimg
22 echo ......
23 echo 正在备份boot.img为boot.img.back
24 ren boot.img boot.img.back
25 echo ......
26 echo 正在解开ramdisk
27 bootimg --unpack-ramdisk
28 echo ......
29 echo 替换开机画面
30 move /Y initlogo.rle initrd
31 echo ......
32 echo 重新打包ramdisk
33 bootimg --repack-ramdisk
34 rmdir /S /Q initrd > nul
35 del /Q ramdisk.gz
36 echo ......
37 echo 重新生成boot.img
38 bootimg --repack-bootimg 0x200000 "mem=214M console=ttyMSM2,115200n8 androidboot.hardware=swift uart.mode=arm11_uart_disable crash=off" 2048 2048
39 del /Q ramdisk.cpio.gz cpiolist.txt kernel
40 echo ......
41 echo OK,现在开始刷机,请确认手机驱动安装好并且手机和电脑正常连接!
42 SET /P SJ=确认输入y回车继续,否则将退出:)
43 if %SJ% NEQ y exit
44 cls
45 cd tools
46 fastboot erase boot
47 fastboot flash boot ../boot.img
48 fastboot reboot
49 echo ok~刷完了,等待重新开机你就会看到新的开机画面
50 echo 第一次启动速度可能会比较慢,请耐心等待!
51 pause
52 exit
53 :quit
54 echo 抱歉不存在boot.img文件!
55 pause
56 exit
方法延伸
除了修改开机动画外,同样我们可以做到提取一些ROM中的开机动画,也可以直接替换掉一些自己在PC端修改好的boot.img中的文件,原理一样,大家自行研究!