星期五, 4月 02, 2010

如何解開 Android 手機的 Rom

解開 img 格式的檔案:

最常見的應該是 img 格式的檔案,

雖然都是 img 格式可是其實有分成兩種,

一種是 boot.img 和 recovery.img 的格式,

這兩個檔案用的是 android 自己定義的格式,

boot.img 和 recovery.img 的解壓縮可以參考下面這篇文章解開
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images

另外的 system.img / recovery.img 等分割區則是採用 yaffs2 格式,

我將解壓縮的工具上傳到下面的網址,

http://www.megaupload.com/?d=BLRZORM0 System/Userdata image unpack tool for windows

http://unyaffs.googlecode.com/files/unyaffs System/Userdata image unpack tool for linux

windows 使用時只要把 system.img 用滑鼠拖曳到 unpack.bat 圖示上面就會自動解壓縮了
(會展開在該目錄下所以會有點亂)

linux 則可以透過下列命令解開 xxx.img

#./unyaff system.img
另外 system.tar 則是可以用 winrar 或是 tar 直接開啟和 system.img 內容相同

system.img 備份
http://www.megaupload.com/?d=4Z9DBQ7Y A688 system.tar
http://www.megaupload.com/?d=58N1F0Y0 A688 system.img

解開 nb0 格式的檔案:
大陸那邊的首派 A60 這隻跟 A688 幾乎相同的手機
有放出 Rom 而且是單一檔案的格式(xxx.nb0),
可以透過 RUT 這個刷機程式刷成 A60 官方的系統,
(聽說有去掉了某些 Google 服務)
透過我下面的連結裡面的 nb0-utils.exe 這個程式可以
http://www.megaupload.com/?d=X1LAJDPN A688 Tools
可以把 nb0 解開成 img 的格式,
nb0-utils.exe unpack FXX-0380-0-0000-7003-A01.nb0 a60
nb0-utils.exe unpack <nb0 檔案名稱> <要解開到哪個資料夾(要先存在)>
在 a60 資料夾下面會看到很多 xxx.xml xxx.img 的檔案
要把檔案打包回去則是下
nb0-utils.exe pack a60.nb0 a60
A60 官方 Rom 下載
http://www.megaupload.com/?d=8WNQ8OLR
下面這幾個是我解開的大陸首派 A60 的 Rom 順便備份下
http://www.megaupload.com/?d=9S4P9CKH A60 boot.img
http://www.megaupload.com/?d=6PHNS9Y0 A60 ftm.img
http://www.megaupload.com/?d=0LWRSZVS A60 hidden.img
http://www.megaupload.com/?d=K4I092LU A60 recovery.img
http://www.megaupload.com/?d=VOH6JK3Q A60 splash.img
http://www.megaupload.com/?d=0IIJ0KQ5 A60 system.img

=================================

另外 A688 的開機畫面分成 splash 和 開機動畫兩部分,
splash 就是下面的 splash.img 開機第一眼看到的威寶商標畫面,
另外還有兩段由圖片組成的動畫放在 hidden.img 的
/hidden/data/Power-on animation/ 下面,
圖片大小為 320x480 全彩 png 可以拿相同格式的圖替換,
就算弄錯也只是沒開機畫面而已,
用 Root Expoler 就可以替換

20 則留言:

安哥 提到...

小狼大你好:

請問一下,將system.img解開後,有沒有工具可以把它重新打包(Windows環境下)?
謝謝~

小狼的BLog 提到...

恩是有人在 windows 上面安裝 cygwin 然後自己編譯 windows 的 mkyafss2img 這隻程式,
不過看他討論區後面的留言發現會因為權限等問題所以會無法正常開機=.=|||
所以應該還是只有 linux 的版本...

安哥 提到...

謝謝~
我在Linux下成功重新build system.img
我改了鎖屏底圖...
我把它刷到A60上面,可以正常執行,看到畫面也被更新了~
但是...開機動畫卻不見了~
似乎會影響到hidden.img的執行...
不曉得小狼大是否有解決的方式?感謝!

不過還好,我有保留原來的system.img...
如果不行就只好再刷回去了!

小狼的BLog 提到...

To 安哥:
抱歉這麼晚才回...
不知道你的問題解決了嗎?
我在改開機畫面時也有遇到類似的情況,
你可能要注意下格式是否完全一樣,
像圖片的解析度及是否為相同的畫素,
不過我也沒有改過待機的底圖所以也不大確定是不是這樣的原因引起的XDDD

安哥 提到...

To 小狼:

問題還沒解決...
因為我是直接修改framework-res目錄中的圖檔(格式應該無誤),然後用mkyaffs2image重新打包system.img...
即使都不修改任何東西,把解開後的system重新打包再刷回去,也是會發生同樣的狀況~
我估計應該是在boot.img或hidden.img中有紀錄某些資訊,比如system.img的原始大小...
目前我還不知道要如何修改這兩個image的內容,所以就只能先暫時這樣~
如果有人知道要如何修改,也請分享一下,謝謝!

小狼的BLog 提到...

看起來是你用的 mkyaffs2image或是 unyaffs 有問題造成的,
不知道你用的 mkyaffs2image 是哪來的版本呢?
我是用 Android Source 編譯後產生的 mkyaffs2image,
我試過把 system.img 解開修改檔案後再包回去是正常的,
不過如果只是要改待機畫面的話應該不用動到 system.img 啦,
用 root explorer 這個程式把 /system/framework/framework-res.apk 複製到 SD 內然後把檔名改成 framework-res.zip,
接著修改 framework-res.zip 內的 \res\drawable\zzz_fih_screenlock_bg.png 然後再把檔案包進去就可以了,
弄完後改回 framework-res.apk 在用 root explorer 丟回 /system/framework/framework-res.apk 覆蓋過去就可以了,
下面是我修改後的檔案給你參考看看,
http://www.megaupload.com/?d=QMFN848I

安哥 提到...

我用的 mkyaffs2image 及 unyaffs 是從網路上搜尋來的,可以順利解開,也可以順利包回去,但就是包回去後大小跟原本的system.img大小不同,即使檔案都不更動。
我知道如果只是改待機畫面不需要更動整個system.img,我只是用來測試自己建立一個新的system.img,然後刷回去看是否可以正常執行~
不知道你包回去的system.img大小是否和原本的大小一樣?
可否提供你的 mkyaffs2image 及 unyaffs 給我,謝謝!

小狼的BLog 提到...

我把我的檔案傳到下面的網址了:
http://www.megaupload.com/?d=1T3AEDBQ
其實 A688_Tools 內也有
剛試了下,解開後在包回去大小是一樣的阿~~

Tiki 提到...

小狼大大
可以秀一下你的開機畫面嗎?有點好奇啊!!!

小狼的BLog 提到...

在這篇文章後面有我改機後開機畫面的展示你可以參考看看不過錄的不是很好就是了
http://snowwolf725.blogspot.com/2010/04/a688.html
這是 Rex Chen 改機後的畫面畫面比較清楚
http://www.facebook.com/video/video.php?v=114244825275822&ref=share

Tiki 提到...

都改的粉棒啊!! 謝謝啦! 我也正在修改中....

Tiki 提到...

小狼大請問一下
有一些HTC機器用的晶片是跟A688一樣的,不知道核心的驅動程式可以共用嗎??

小狼的BLog 提到...

To Tiki:
是可以共用的,
不過通常驅動程式都已經直接編譯在 kernel 中而非編譯成模組的形式所以也沒辦法更換

Tiki 提到...

唉!這是Linux系統的痛!

brunomsg 提到...

ROM 2.1 & RUT x64
http://boston-mania.blogspot.com/

匿名 提到...

請問A60 解開的 img 是那一版的? 還有 nb0-utils.exe 無法下載,可以同步更新至 首派A60-Android2.2-A02正式版1.0更新 嗎?

小狼的BLog 提到...

我也忘記是那一版了...
nb0-utils.exe 目前包含在 A688_Tools 內可以在下面的網頁下載
http://snowwolf725.blogspot.com/2010/04/a688a60a88.html
應該不用同步更新吧需要就去首派的網站下載回來自己解開就行了

Unknown 提到...

可以請教一下 img解出來的 修改後要怎麼打包成img 再打包成nb0

這問題困擾我好久 一直找不到教學?

vvv421 提到...

小狼大請問一下
我目前是使用遠傳 T1 (聽說跟A688算是一樣的機型)
目前已刷A1 2.19FROM
CPU已改成600Mhz
若要提升CPU
是否可以提取800Mhz的boot.img
在刷入機內
就可以完成
煩請大大指正

小狼的BLog 提到...

To 曾:
風大曾經有寫過教學的
http://bbs.apanda.com.cn/viewthread.php?tid=25358
目前風大的網站連不上去,上面是別人轉貼的教學

To vv421:
是的只要先找到 800Mhz 的 boot.img
然後刷上去就可以超頻到 800Mhz,
不過這看手機的體質有些手機只能到 600Mhz,
建議刷機前先透過 Rom Manager 備份韌體這樣玩壞還可以透過 fastboot mode 刷回來,
下面是 PJMOD 大大的 2.2 版的 864Mhz 韌體
http://www.htcmania.com/showthread.php?t=192194

另外提取的 boot.img 版本最好和手機的韌體版本相符,
這樣比較不會出現卡在 logo 或是不斷重開的情況