利用備份技術獲取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

相關文章
相關標籤/搜索