【问题标题】:Mount Android emulator images挂载 Android 模拟器镜像
【发布时间】:2012-07-25 11:31:17
【问题描述】:

我正在尝试在装有 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.imguserdata.img 文件。 simg2img 为所有文件返回“bad magic”。

谢谢亚历克斯

编辑:userdata-qemu.img 工作 unyaffs2

【问题讨论】:

    标签: android image emulation mount


    【解决方案1】:

    您已经回答了自己的问题,但我会扩展一下。 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

    【讨论】:

      【解决方案2】:

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

      这是我需要挂载的文件:

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

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

      1. 安装 simg2img

        • 在较新版本的 Ubuntu 上,它以软件包的形式提供

          sudo apt install simg2img
          
        • 在旧版本的 Ubuntu 上,您需要从源代码编译它

          1. 安装先决条件

            sudo apt 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
            
      2. 将稀疏图像文件解压缩为原始图像文件:

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

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

      注意:这不适用于 boot.img,这是一种特殊情况: How to extract boot.img?

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-05
          • 1970-01-01
          • 2011-09-21
          • 2015-11-09
          相关资源
          最近更新 更多