挂载Android模拟器图像

时间:2012-07-25 11:31:18

标签: android image emulation mount

我尝试使用Android 2.1在模拟器上分析Android恶意软件。我想分析可疑应用程序之后的文件权限和指纹。我知道,我可以使用adb shell来获取这些信息,但我认为我不能相信这些信息可以在执行例如一个rootkit。 我认为防止rootkit隐藏的唯一方法是直接挂载图像或? 我有以下文件:

ramdisk.img  snapshots.img  userdata-qemu.img  cache.img  system.img  userdata.img  zImage

如何在Ubuntu上安装/解压缩(读访问就足够了)?

使用unyaffs,我可以提取system.img和userdata.img文件。 simg2img为所有文件返回“bad magic”。

谢谢Alex

编辑:userdata-qemu.img适用于unyaffs2

3 个答案:

答案 0 :(得分:15)

你已经回答了自己的问题,但我会稍微扩展一下。 Android sdk附带系统映像,例如:

$ cd android-sdk-linux/system-images/android-15/armeabi-v7a/
$ ls *.img
ramdisk.img  system.img  userdata.img

$ cd ~/.android/avd/<img name>.avd/
$ ls *.img
cache.img  sdcard.img  userdata.img  userdata-qemu.img

但是,并非所有图像都属于同一类型:

$ file *.img
cache.img:         VMS Alpha executable
sdcard.img:        x86 boot sector, code offset 0x5a, OEM-ID "MSWIN4.1", sectors/cluster 4, Media descriptor 0xf8, sectors 2048000 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 3993, reserved3 0x800000, serial number 0x17de3f04, label: "     SDCARD"
userdata.img:      VMS Alpha executable
userdata-qemu.img: VMS Alpha executable

由于sdcard.img不包含额外的分区,因此可以直接安装它而不使用偏移参数(如-o loop,offset=32256):

$ fdisk -l sdcard.img
You must set cylinders.
You can do this from the extra functions menu.

Disk sdcard.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

     Device Boot      Start         End      Blocks   Id  System

$ sudo mount -o loop sdcard.img /mnt/

其他描述为VMS Alpha executable的图像文件实际上是yaffs2个文件。据我所知,他们无法直接安装,但可以使用两个实用程序unyaffsunyaffs2提取。

$ mkdir extract
$ cd extract
$ unyaffs ../userdata.img

$ unyaffs2 --yaffs-ecclayout ../userdata.img .

注意,还有一个名为simg2img的实用程序可以在./android_src/system/extras/ext4_utils/下的android源代码树中找到,该实用程序用于压缩的ext4 img文件。但是,如果错误地应用于yaffs2图片,则会以Bad magic投诉。

答案 1 :(得分:7)

如果有人最终在这里寻找有关simg2img的使用的更多信息:

这是我需要安装的文件:

$ file factoryfs.img 
factoryfs.img: data
$ unyaffs factoryfs.img 
Can't determine flash layout, perhaps not a yaffs2 image

这就是我能够装载它的方式:

  1. 安装必备软件(Ubuntu / Debian):

    sudo apt-get install build-essential git zlib1g-dev
    
  2. 下载并编译源代码:

    git clone https://android.googlesource.com/platform/system/core
    cd core/libsparse
    gcc -o simg2img -Iinclude simg2img.c sparse_crc32.c backed_block.c output_file.c sparse.c sparse_err.c sparse_read.c -lz
    
  3. 将稀疏图像文件解压缩为原始图像文件:

    ./simg2img /path/to/factoryfs.img /path/to/factoryfs.raw.img
    
  4. 挂载原始图像文件。在Ubuntu中,最简单的方法是右键单击文件应用程序→打开方式磁盘映像安装程序中的文件。或者使用命令行:

    sudo mkdir /mnt/factoryfs
    sudo mount /path/to/factoryfs.raw.img /mnt/factoryfs
    

  5. 这不适用于boot.img,这是一个特例: How to extract boot.img?

答案 2 :(得分:1)

我想在Windows上解压缩NON-SPARSE ext4映像文件。 simg2img用于稀疏ext4。根据定义,Ext4并不稀疏,它只是一个选项,但是无论出于何种原因,这个过程的每个描述都以该假设开始。无论如何,在我浪费了大量时间试图解决这个问题之后,DiskTool毫不费力地为我做了这件事。它也没有安装任何无关的垃圾,它在Windows 10上运行良好:

http://sourceforge.net/projects/androidicsjbext/