14

Android 2.1 のエミュレーターで Android マルウェアを分析しようとしています。不審なアプリの実行後に、ファイルのアクセス許可とフィンガープリントを分析したい。を使用しadb shellてこの情報を取得できることはわかっていますが、ルートキットなどの実行後の情報は信頼できないと思います。

ルートキットが隠れないようにする唯一の方法は、イメージを直接マウントすることだと思いますか? 次のファイルがあります。

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

それらを Ubuntu にマウント/抽出するにはどうすればよいですか (読み取りアクセスで十分です)。

unyaffs を使用すると、system.imganduserdata.imgファイルを抽出できます。simg2img は、すべてのファイルに対して「悪い魔法」を返します。

ありがとうアレックス

編集: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ファイルです。私の知る限り、直接マウントすることはできませんが、unyaffsまたはunyaffs2という 2 つのユーティリティを使用して抽出できます。

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

また

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

圧縮されたext4 imgファイルで使用されるsimg2imgAndroidソースツリーで見つけることができる別のユーティリティがあることに注意してください。ただし、画像に./android_src/system/extras/ext4_utils/誤って適用すると、 .yaffs2Bad 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. raw イメージ ファイルをマウントします。Ubuntu でこれを行う最も簡単な方法は、ファイル アプリ → Open WithDisk 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 で NON-SPARSE ext4 イメージ ファイルを解凍したかったのです。simg2img はスパース ext4 で使用するためのものです。Ext4 は定義上スパースではありません。これは単なるオプションですが、このプロセスのすべての説明は、何らかの理由でその仮定から始まります。とにかく、これを理解しようとして多くの時間を無駄にした後、DiskTool は私のために何の努力もせずにこれを行いました。不要なゴミもインストールされず、Windows 10 でも問題なく動作します。

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

于 2016-05-21T15:06:24.640 に答える