zoukankan      html  css  js  c++  java
  • [Android]利用runas命令在不root情况下读取data下面的数据

    前言

      这一段时间都在做换肤功能,遇到很多问题,解决后又有新的问题,这里分享一则,想在不使用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之嫌,方法分享给你,至于你用来做什么我可以管不了了 :) 也算是一种黑客精神,提醒大家开发应用时切勿对重要的数据明文存放。

  • 相关阅读:
    <转>性能测试浅谈
    Linux内存机制以及手动释放swap和内存
    Jmeter(十二)_打印时间戳
    Jmeter(二十一)_脚本参数化与内存溢出的解决方案
    Jmeter(五)_函数
    爬虫利器_you-get
    Jmeter(九)_获取JDBC响应做接口关联
    JMeter(十三)-代理服务器录制脚本
    JMeter(十)-正则表达式关联
    JMeter(十四)-自动生成测试报告
  • 原文地址:https://www.cnblogs.com/over140/p/2547706.html
Copyright © 2011-2022 走看看