利用备份技术获取apk本地存储数据

  即便设备没有root,咱们也能够经过物理访问设备来获取应用程序的数据,咱们还能够经过此方法改变一个应用程序的数据。若是一个应用程序将数据存储在客户端, 使用简单的密码或pin检查,攻击者有可能使用这种方法来绕过这些检查。在本文中,咱们将讨论如何在一台没有root的设备上利用这种方法来改变应用程序特定的数据。主要操做步骤以下所示:php

  Step 1: 备份目标应用html

  Step 2: 去掉头部信息而后保存文件linux

  Step 3: 作必要的修改android

  Step 4: 从原始的”.ab”文件得到头部信息ubuntu

  Step 5: 把修改过的内容附加在头信息后面vim

  Step 6: 使用修改过的内容来恢复备份app

 

  下面以一个实际apk为例来介绍整个操做过程。svn

  咱们首先须要安装Star命令行工具,下载连接以下:http://sourceforge.net/projects/adbextractor/工具

下载后切换到Star命令行工具的目录,以下所示:post

 

而后运行如下命令安装好Star工具。

dpkg -i star_1.5final-2ubuntu2_i386.deb

  在这篇文章中,咱们在一个没有root的设备上来尝试修改一个实例程序的内容。咱们先给目标应用作一个备份,使用如下命令:

adb backup -f mybackup.ab com.***book.activity

 

  

从以上图片能够看到程序提示咱们去确认备份。所以咱们须要在设备上点击确认(可是本实例中用到的程序并不须要确认)。

当咱们确认以后,它会建立一个”.ab”后缀的安卓备份文件。一般状况下,前24字节是头。所以咱们使用dd工具来去除前24字节而后压缩为tar文件,使用如下命令:

dd if=mybackup.ab bs=24 skip=1| openssl zlib -d > mybackup.tar

以上命令从输入读取源文件并跳过了头部的24字节

 

注意,在执行以上命令的时候可能会出现如下错误:

openssl:Error: 'zlib' is an invalid command,

解决方法是安装openssl以及补丁。参考连接:http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssl.html

下载地址: http://www.openssl.org/source/openssl-1.0.1k.tar.gz

补丁地址:http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.1k-fix_parallel_build-1.patch

编译及安装:

patch -Np1 -i ../openssl-1.0.1k-fix_parallel_build-1.patch &&

./config --prefix=/usr         \
         --openssldir=/etc/ssl \
         --libdir=lib          \
         shared                \
         zlib-dynamic &&
make

测试编译结果:

make test

以root用户安装:

make MANDIR=/usr/share/man MANSUFFIX=ssl install &&
install -dv -m755 /usr/share/doc/openssl-1.0.1k  &&
cp -vfr doc/*     /usr/share/doc/openssl-1.0.1k

备份完毕后使用tar建立一个”.list”文件,这是为了保证在从新打包备份时保持顺序正确。

tar -tf mybackup.tar >mybackup.list

如今咱们获得了如下文件:

  mybackup.ab:从设备导出的备份文件

  mybackup.tar:从dd命令生成的文件

  mybackup.list:从tar文件产生的list文件

咱们新建一个文件夹backup,把这几个文件连同abe.jar放到新建文件夹中。

 

咱们可使用如下命令解压tar文件:

tar -xf mybackup.tar

从上图能够看到,生成了一个新文件夹“apps”。咱们能够在这个目录中找到应用相关的信息。

 

查看location_preferences.xml文件,其内容以下:

 

咱们使用vim把其中的“北京”修改成“American”。

 

接下来咱们须要把修改后的文件恢复到设备上。

为了恢复修改后的文件,须要把文件转换成(.ab)格式,并把”.ab”文件头附加回去。具体方法是:

首先,使用star命令建立”.tar”文件,而后把文件头附加回去。

star -c -v -f newbackup.tar -no-dirslash list=mybackup.list

如今咱们得到了“newbackup.tar”文件。而后咱们把原始的文件头附加在修改后的tar文件前面。

dd if=mybackup.ab bs=24 count=1 of=newbackup.ab

你能够从上图中看到,咱们只拷贝了一块文件。文件为”newbackup.ab”

最后一步是把修改后的内容附加在头后面,使用如下命令:

openssl zlib -in newbackup.tar >> newbackup.ab

至此,咱们的备份文件准备完成。而后咱们使用如下命令把备份文件恢复到设备上:

adb restore newbackup.ab

获得以下信息:

 

在手机root的状况下咱们能够直接到应用的路径中去查看shared preferences文件。

在不root的状况下,你能够经过再次备份数据到本地计算机进行查看。

从下图能够看到文件已经被修改:

 

咱们应该如何保护咱们的应用呢?

若是你的应用中存在敏感信息,你能够停用备份功能。能够修改AndroidManifest.xml文件为:

android:allowBackup=”false

 

参考文章:

http://forum.xda-developers.com/showthread.php?t=2011811

http://nelenkov.blogspot.in/2012/06/unpacking-android-backups.html

相关文章
相关标签/搜索