安装 Android 模拟器镜像

14

我正在尝试在 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个回答

16

你已经回答了自己的问题,但我会稍微详细一些。 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可执行文件的其他图像文件实际上是yaffs2文件。据我所知,它们不能直接挂载,但可以使用两个实用程序unyaffsunyaffs2进行提取。

$ mkdir extract
$ cd extract
$ unyaffs ../userdata.img
或者
$ unyaffs2 --yaffs-ecclayout ../userdata.img .

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


8

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

这是我需要安装的文件:

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

这是我如何安装它的方法:

  1. Install simg2img

    • On newer versions of Ubuntu it's available as a package

      sudo apt install simg2img
      
    • On older versions of Ubuntu you'll need to compile it from source

      1. Install prerequisites

        sudo apt install build-essential git zlib1g-dev
        
      2. Download and compile source

        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
        
  2. Uncompress the sparse image file to a raw image file:

    simg2img /path/to/factoryfs.img /path/to/factoryfs.raw.img
    
  3. Mount the raw image file. In Ubuntu the easiest way to do this is by right-clicking the file in the Files app → Open WithDisk Image Mounter. Or using the command line:

    sudo mkdir /mnt/factoryfs
    sudo mount /path/to/factoryfs.raw.img /mnt/factoryfs
    
注意:这种方法不适用于boot.img,因为它是一个特殊情况:如何提取boot.img?

1
我想在Windows上解包一个非稀疏的ext4镜像文件。simg2img用于稀疏的ext4。根据定义,Ext4不是稀疏的,那只是它的一个选项,然而由于某种原因,这个过程的每个描述都以此为前提。无论如何,DiskTool在我浪费大量时间试图弄清楚这一点之后,毫不费力地为我完成了这项任务。它也不会安装任何多余的垃圾,并且在Windows 10上运行良好。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接