[Android]利用run-as命令在不root情況下讀取data下面的資料

來源:互聯網
上載者:User

 

前言

  這一段時間都在做換膚功能,遇到很多問題,解決後又有新的問題,這裡分享一則,想在不使用shareUserId來實現多APK共用資源,也建議謹慎使用shareUserId。  聲明  歡迎轉載,但請保留文章原始出處:)     部落格園:http://www.cnblogs.com    農民伯伯: http://over140.cnblogs.com 

本文

  一、關鍵步驟

    主要是run-as命令:over@over-ThinkPad-R52:~$ adb shell
$ run-as com.package
$ cd /data/data/com.package
$ ls
databases
lib
$ cd databases
$ ls
preferences.db
$ cat preferences.db > /mnt/sdcard/preferences1.db   

代碼說明:

注意com.package換成自己的完整包名,關鍵是run-as命令,最後使用cat命令把資料庫拷貝到sd卡下面。

 

  二、補充

    同事分享/data/data/package/lib這個目錄是可以直接存取的,也就是說adb shell後雖然無法讀取/data目錄,但是可以直接存取這個目錄下的檔案,可以通過上面的run-as命令看得出其許可權與其他目錄的許可權是不同的,為system許可權,這為多apk共用so提供了便利,這也是Vitamio所使用的方式。

    2012-6-14

         如果簽名了並且指定設定了android:debuggable="false"將無法使用該命令。 

    2012-7-13

         感謝網友分享(見評論),注意不要把adb shell 和 run-as作為一條命令一起執行,例如:adb shell run-as com.pack

 

  三、參考檔案
    android上使用手機跑adb存取data資料夾[blogspot]
    Why do I get access denied to data folder when using adb?

 

結束

關於共用資料也可以研究一下/data/data/package/files,使用openFileOutput的第二個參數來指定存取權限。事物總有其多面性,本文有鼓勵窺視apk之嫌,方法分享給你,至於你用來做什麼我可以管不了了 也算是一種駭客精神,提醒大家開發應用時切勿對重要的資料明文存放。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.