【发布时间】:2018-05-18 17:28:15
【问题描述】:
我想访问连接到 Android 设备的 SD 卡中的特定 LBA。默认情况下,Android 不提供该级别的低级别访问权限。我尝试通过 SCSI 命令通过 USB 读卡器访问它,但它不起作用。我还尝试了 POSIX 命令来直接查找和读取 LBA(使用 jni 的 CPP 本机命令),但文件读取有效,而不是直接 LBA 读取。谁能建议一种方法来做同样的事情?
【问题讨论】:
我想访问连接到 Android 设备的 SD 卡中的特定 LBA。默认情况下,Android 不提供该级别的低级别访问权限。我尝试通过 SCSI 命令通过 USB 读卡器访问它,但它不起作用。我还尝试了 POSIX 命令来直接查找和读取 LBA(使用 jni 的 CPP 本机命令),但文件读取有效,而不是直接 LBA 读取。谁能建议一种方法来做同样的事情?
【问题讨论】:
我不相信您可以像在 Linux/Unix 上使用块设备通常那样访问 android 上的分区(我会说是用户分区)。查看link 了解如何在 Linux 上实现它的详细信息。
现在在 android 上,您通常在 android 设备上看到的分区,如 /storage/sdcard0 或 /storage/sdcard1 或 /stroage/emulated/0 或 /storage/80FD-33DA 等可以映射到内部存储上的分区。内部存储通常有两个分区,一个用于用户应用程序无法访问的系统,第二个用于用户应用程序(用户应用程序可以访问)。它还可以映射到外部存储 SD 卡,具体取决于 Android 操作系统版本和设备制造商。
访问原始级别分区的另一种方法是使用 dd 命令(这同样不适用于所有 android 变体)。为此检查此 android stackexchange article。
dd if=/dev/block/mmcblk0p7 of=/storage/sdcard0/usrdata.img
您也可以查看file manager apps 以了解他们如何列出和管理用户分区
【讨论】: