很久以前写的,突然需要,翻出来看一下。
1、root
2、拷贝busybox到/system/bin扩展命令,注意要先remount,然后更改busybox权限
3、进入adb shell,执行busybox df查看挂载的磁盘(嫌拷busybox麻烦直接用mount命令也行)
busybox df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 171620 76 171544 0% /dev
tmpfs 171620 0 171620 0% /mnt/asec
tmpfs 171620 0 171620 0% /mnt/obb
/dev/block/mtdblock0 320000 239068 80932 75% /system
/dev/block/mtdblock3 389120 173904 215216 45% /data
/dev/block/mtdblock2 230400 1164 229236 1% /cache
/dev/block/mtdblock1 10240 2440 7800 24% /data/idd
/dev/block/vold/179:1 7745748 4033016 3712732 52% /mnt/sdcard
/dev/block/vold/179:1 7745748 4033016 3712732 52% /mnt/secure/asec
4、我们主要关心/data文件系统下的内容,只要把对应的/dev/block/mtdblock3分区dump到本地
5、如果是ext格式的可以通过dd命令按位拷贝磁盘到文件
dd if=/dev/block/mtdblock3 of=/sdcard/datadump
如果是yaffs格式的,这个操作不行,会提示IO错误,无法读取,需要用下面的方法6、7
6、参考http://androidforums.com/optimus-s-all-things-root/219777-need-dump-build-recovery.html
通过查看/proc/mtd文件读出对应的磁盘文件
# cat /proc/mtd (4.x后要用cat /proc/partitions) 最新的三星需要ls -l /dev/block/platform/ 应该是通用的
cat /proc/mtd
dev: size erasesize name
mtd0: 13880000 00020000 "system" //系统盘,ROM,相当于上面的/dev/block/mtdblock0 320000 239068 80932 75% /system
mtd1: 00a00000 00020000 "appslog"
mtd2: 0e100000 00020000 "cache"
mtd3: 17c00000 00020000 "userdata" //用户数据盘,最重要,相当于上面的/dev/block/mtdblock3 389120 173904 215216 45% /data
7、dd if=/dev/mtd/mtd0 of=/sdcard/system.img bs=4096 //按位克隆ROM,注意要加bs,否则会报参数错误
dd if=/dev/mtd/mtd3 of=/sdcard/userdata.img bs=4096 //按位克隆用户数据
也可用cat /dev/mtd/mtd0>/sdcard/catsystem.img
用DD方式拷贝出来的img文件无法读取和挂载只能十六进制搜索
磁盘分区为/dev/sda1,挂载点为/boot,备份文件设定为/data2/boot.disk;
dd if=/dev/sda1 of=/tmp/boot.disk
备份出来的文件甚至可以用mount 挂载:mount -o loop /tmp/boot.disk /mnt
8、克隆出的img文件用encase分析,深度挖掘
9、命令行打开模拟器emulator -avd 2.3.3 -partition-size 400 分区强制设定为400M
系统备份 busybox tar -cvf /sdcard/datadata.tar /data/data
busybox tar -cvf /sdcard/dataapp.tar /data/app
busybox tar -cvf /sdcard/systemapp.tar /system/app
-p :使用原档案的原来属性(属性不会依据使用者而变)
恢复 busybox tar -xvf /sdcard/dataapp.tar
busybox tar -xvf /sdcard/datadata.tar
busybox tar -xvf /sdcard/systemapp.tar
备忘:
http://hi.baidu.com/serial_story/blog/item/263bcdd3e321ebd5a9ec9a9f.html
Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别
mtd是字符设备,mtdblock是块设备,由于驱动原因不能用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockN去操作了。因为/dev/mtdblock中不包含对应的ioctl,不支持你这么操作。对字符设备mtd操作就是作用于块设备mtdblock,所以上面直接dd块设备报错了
钛备份工作原理:
1、备份:tar获取/system/app 、/data/app、/data/data三个目录下的文件
2、恢复:用户程序先安装然后倒入数据;系统文件只恢复部分兼容的,将程序文件和数据复制到对应目录下
Linux恢复删除
debugfs http://blog.chinaunix.net/space.php?uid=20778443&do=blog&id=94583
ext3grep http://hi.baidu.com/wangtao8899/blog/item/cda6f2d923c8dbec38012f2d.html
http://scglinux.blog.51cto.com/4383041/903705
Moto
dd if=/dev/block/mmcblk0p16 of=/sdcard-ext/datamoto.img 有密码的话数据库文件需要密码
Samsung 联系人在dbdata目录
2013.8.22更新
参考http://linuxsleuthing.blogspot.hk/2011/06/defeating-droid-let-pillaging-begin.html
先执行mount命令
# mount
rootfs / rootfs ro,relatime 0 0
...
/dev/block/mtdblock4 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock6 /data yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock5 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock0 /config yaffs2 ro,relatime 0 0
...
提示IO错误的情况下用busybox dd conv=noerror 命令跳过错误,经验证,不行
Android系统默认2.2以前用yaffs格式,2.3以后用ext格式,主要是emmc替代nand已经成为主流,以后基本不会遇到yaffs格式的了。
发表评论