对android的各种disk images很好奇,一直想知道怎么去know和hack这些images,所以就有了这篇paper。 [email protected]:/tmp/images/ramdir# find . -name "init*"|xargs md5sum [email protected]:/tmp/images/ramdir# find . |grep init|xargs ls -lrt # mount # /data/busybox/zcat /proc/config.gz|/data/busybox/more [email protected]:/ophone/android-1.5# find . -name *.img关于android的各种disk images
kernel-qemu:????????? data
local.img:?????????????? data
ramdisk.img:?????????? gzip compressed data, from Unix, last modified: Thu Oct 22 16:30:38 2009
system.img:?????????? VMS Alpha executable
userdata.img:???????? VMS Alpha executable
opl.img:???????????????? VMS Alpha executable
cache.img:?????????????? VMS Alpha executable
userdata.img:?????????? VMS Alpha executable
userdata-qemu.img:?? data 文件类型 文件 data kernel-qemu
local.img
userdata-qemu.imggzip ramdisk.img VMS Alpha executable system.img
userdata.img(images目录)
opl.img
userdata.img(avd目录)
cache.img
[email protected]:/tmp/images# ls -lrt ramdisk
-rw-r--r-- 1 root root 260608 Oct 22 01:34 ramdisk
ramdisk: ASCII cpio archive (SVR4 with no CRC)
[email protected]:/tmp/images# cd ramdiskdir/????????????????????????????????????????? cd到该目录中
[email protected]:/tmp/images/ramdiskdir# cpio -idmv <../ramdisk???????????????? 使用cpio来extractramdisk文件
data
default.prop
dev
init
init.goldfish.rc
init.rc
proc
sbin
sbin/adbd
sys
system
509 blocks
[email protected]:/tmp/images/ramdiskdir# ls??????????????????????????????????????????? 这就是被打包在ramdisk中的文件
data? default.prop? dev? init? init.goldfish.rc? init.rc? proc? sbin? sys? system
[email protected]:/tmp/images/ramdiskdir# find . -type f|file -f -
./default.prop:????????????? ASCII text
./init.rc:???????? ASCII English text
./init.goldfish.rc:????????????????? ASCII English text
./init:????? ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
./sbin/adbd:?????????? ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
c3cff931e494bb4872f0ebefe1dad548? ./init.rc
90dd60a3458cce84901d12b362880339? ./init.goldfish.rc
7a950533c62fe91300a5b31b12a38084? ./init
-rwxr-x--- 1 root root? 11875 Jan? 1? 1970 ./init.rc
-rwxr-x--- 1 root root?? 2138 Jan? 1? 1970 ./init.goldfish.rc
-rwxr-x--- 1 root root 127548 Jan? 1? 1970 ./init
data文件共有这么几个,kernel-qemu,local.img和userdata-qemu.img。
什么是data文件?如何使用这些文件?我们面临着么两个问题
VMS Alpah executable共有这么几个system.img,userdata.img,opl.img,userdata.img和cache.img。
什么是VMS Alpha executable?如何使用这些文件?我们面临这么两个问题。。。
使用这个命令据说可以在emulator起来以后进入到android os的shell中,我们来看看、
# pwd
pwd
/
ls -l
lrwxrwxrwx root???? root????????????? 2010-01-31 15:03 preload -> /system/preload
drwxr-xr-x root???? root????????????? 2010-01-31 15:03 Linux
lrwxrwxrwx root???? root????????????? 2010-01-31 15:03 bin -> /opl/telephony/bin
lrwxrwxrwx root???? root????????????? 2010-01-31 15:03 usr -> /opl/telephony/usr
lrwxrwxrwx root???? root????????????? 2010-01-31 15:03 lib -> /opl/telephony/lib
drwxrwxrwt root???? root????????????? 2010-01-31 15:05 tmp
drwxrwxrwt root???? root????????????? 2010-01-31 15:05 sqlite_stmt_journals
drwxrwx--- system?? cache???????????? 2009-12-20 10:11 cache
drwxr-xr-x system?? system??????????? 2009-10-10 13:11 opl
drwxrwxrwx system?? system??????????? 2009-10-24 01:48 local
d--------- system?? system??????????? 2010-01-31 15:03 sdcard
drwxr-xr-x root???? root????????????? 2010-01-31 15:03 d
lrwxrwxrwx root???? root????????????? 2010-01-31 15:03 etc -> /system/etc
drwxr-xr-x root???? root????????????? 2009-10-22 16:20 system
drwxr-xr-x root???? root????????????? 1970-01-01 08:00 sys
drwxr-x--- root???? root????????????? 1970-01-01 08:00 sbin
dr-xr-xr-x root???? root????????????? 1970-01-01 08:00 proc
-rwxr-x--- root???? root??????? 11875 1970-01-01 08:00 init.rc
-rwxr-x--- root???? root???????? 2138 1970-01-01 08:00 init.goldfish.rc
-rwxr-x--- root???? root?????? 127548 1970-01-01 08:00 init
-rw-r--r-- root???? root????????? 118 1970-01-01 08:00 default.prop
drwxrwx--x system?? system??????????? 2009-12-20 10:11 data
drwx------ root???? root????????????? 1970-01-01 08:00 root
drwxr-xr-x root???? root????????????? 2010-01-31 15:04 dev
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
tmpfs /tmp tmpfs rw 0 0
/dev/block/mtdblock0 /system yaffs2 rw 0 0????????????????????????????????????
/dev/block/mtdblock4 /opl yaffs2 rw 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock3 /local yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/system,/opl和/cache是VMS Alpha Executable的system.img,opl.img和cache.img转换而来
/local是data的local.img转换而来
/data嘛,就不太好判断,不知道和userdata.img和userdata-qemu.img有什么关系没?
但至少我们知道可以查看/system来明白system image包含哪些东西了吧。。。,比如/system/framework就是android的framework啦
也可以知道可以查看/cache来明白什么是cache image的内涵了吧。。。
对于local image同理可得。。。
到这里下载busybox,http://benno.id.au/blog/2007/11/14/android-busybox,然后按照提示将busybox push至/data/busybox目录,install后即可运行所有的busybox applet。比如:
/data/busybox/zcat /proc/config.gz|/data/busybox/more
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.25
# Mon Nov 10 05:02:15 2008
所以我们就能知道1.5的Android用的linux kernel是2.6.25版本的。。。
ok,这又是一种新的文件系统,designed specially for NANDchips;YAFFS2是YAFFS的第二版,为了适应新的NAND chips,这些新chip的pagesize有2048bytes,plus 64bytes的spare areas;老版本的NANDchips的page是512bytes,plus 16bytes spare area。
从这篇文章编译Android1.5里能否得到一些启示?
在编译android1.5后,其实我们能得到3个img文件,似乎可以下断言,这三个image是在编译android的过程中得到的。有关生成他们的过程又是另外一个话题,估计得去读makefile了。
./out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
./out/target/product/generic/userdata.img
./out/target/product/generic/system.img
./out/target/product/generic/ramdisk.img
BTW, out目录是在编译过程中产生的目录,其余目录则是source目录
详细解决方案
android的各种*img 资料
热度:462 发布时间:2016-05-01 15:42:49.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法