14

我正在尝试在具有 Android 2.1 的模拟器上分析 Android 恶意软件。我想在执行可疑应用程序后分析文件权限和指纹。我知道,我可以使用adb shell来获取这些信息,但我认为在执行例如 rootkit 之后我不能信任这些信息。

我认为防止rootkits隐藏的唯一方法是直接安装图像还是?我有以下文件:

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

4

3 回答 3

17

你已经回答了你自己的问题,但我会扩大一点。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 源代码树中可以找到另一个实用程序,./android_src/system/extras/ext4_utils/它用于压缩 ext4 img 文件。但是,如果错误地应用于yaffs2图像,它会抱怨Bad magic.

于 2012-09-05T13:44:42.917 回答
8

如果有人最终在这里寻找有关使用的更多信息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 中,最简单的方法是在 Files 应用程序中右键单击文件 →打开方式→ Disk Image Mounter。或者使用命令行:

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

注意:这不适用于 boot.img,这是一种特殊情况: 如何提取 boot.img?

于 2014-06-10T16:09:33.547 回答
1

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

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

于 2016-05-21T15:06:24.640 回答