振动测试仪N600能不能用来电厂巡检工作总结?

Android权限之一APK对文件的访问控制_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android权限之一APK对文件的访问控制
来源:Linux社区&
/data目录权限:
drwxrwx--x system&& system&&&&&&&&&&&
23:41 data
这种情况下,用ES Explorer查看/data时,目录为空。File("/data")对象的canRead/canWrite方法测试,不可读不可写文件存在。
说明默认情况下APK的gid中没有system。
/system目录权限:
drwxr-xr-x root&&&& root&&&&&&&&&&&&&
19:23 system
这种情况下,ES Explorer可以进入到/system目录,File("/system")对象的canRead/canWrite方法测试,可读不可写文件存在。
说明默认情况下APK的gid中有root。
对于一个目录来说,假如该目录的权限设置对于APK来说不可读不可写,用File("")对象的canRead/canWrite方法测试,不可读不可写文件存在。
试验了一下午,总结一下:
1、普通APK运行时,属性root组,但不属性system组。
2、对于父目录a没有读写权限但子目录a/b有读写权限的的情况,直接使用File("a/b")方式可以对a/b目录进行读写。
这一点儿对一些特殊场合下的APK比较有意义。比如一个系统的内置程序有一些加密信息需要放在本地,但又不能让其它程序和用户能访问到。就可以对系统做一下定制,在/data下面建立一个someone文件夹,权限为777.因为/data本身是700,所以第三方程序是无法访问到这个目录底下的任何东西的。但对于我们的这个特殊APK来说,通过File("/data/someone")这种方式是可以访问到,并且可读可写的。
3、上面试验中没有提到的一点,我在一个APK中使用ProcessBuilder启动一个本地进程时,本地进程和这个APK具有相同的UID和GID。
4、系统中所有查看用户ID相关的命令都被删除了。所以,上面都是猜的。
相关资讯 & & &
& (07/13/:14)
& (08/11/:27)
& (05/06/:13)
& (04/17/:32)
& (05/31/:15)
& (04/02/:07)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款  每个程序在安装时都有建立一个系统ID,如app_15,用以保护数据不被其它应用获取。Android根据不同的用户和组,分配不同权限,比如访问SD卡,访问网络等等。底层映射为Linux权限。
2. 应用申请权限   1)应用开发者通过AndroidManifest.xml中&uses-permission&指定对应权限,再映射到底层的用户和组,默认情况下不设定特殊的权限。AndroidManifest加入权限后系统安装程序时会在图形界面中提示权限
  2) 如果是缺少某个权限(程序中使用的某种权限而在AndroidManifest.xml中并未声名),程序运行时会在logcat中打印出错误信息requires &permission&
  3) 与某个进程使用相同的用户ID
    应用程序可与系统中已存在的用户使用同一权限,需要在AndroidManifest.xml中设置sharedUserId,如android:sharedUserId="android.uid.system ",作用是获得系统权限,
  但是这样的程序属性只能在build整个系统时放进去(就是系统软件)才起作用,共享ID的程序必须是同一签名的
  4)关于应用程序共用权限的问题,在PackageManagerService.java中有相关的配置
    PackageManagerService(){
      mSettings.addSharedUserLPw("android.uid.system",
      Process.SYSTEM_UID, ApplicationInfo.FLAG_SYSTEM);
      mSettings.addSharedUserLPw("android.uid.phone", RADIO_UID, ApplicationInfo.FLAG_SYSTEM,
      new int[] {UID_NET_RAW, UID_QCOM_DIAG, UID_NET_ADMIN});
      &&
    比如:看到PhoneApp 的AndroidManifest.xml中
      android:sharedUserId="android.uid.phone" 使PhoneApp具有radio权限
      在访问RIL时会进行此权限检测
3. Android权限的实现
  1)第一层:由应用设置,修改AndroidManifest.xml,形如:
    &uses-permission android:name=&android.permission.INTERNET&/&
  2)第二层:框架层,权限对应组,frameworks/base/data/etc/platform.xml,形如:
    &permission name=&android.permission.INTERNET&&
      &group gid=inet& /&
    &/permission&
  3)第三层:系统层,系统的权限,
    system/core/include/private/android_filesystem_config.h,形如:
    #define AID_RADIO
/* telephony subsystem, RIL */
    #define AID_INET
//建立SOCKET的权限
    &&
    static const struct android_id_info android_ids[] = {
      { "radio",
AID_RADIO, },
      { &inet&, AID_INET, },
      &&
4.系统权限
  1) 特殊权限的用户
  #define AID_ROOT
/* traditional unix root user */
  #define AID_SYSTEM
/* system server */
  #define AID_RADIO
/* telephony subsystem, RIL */
  #define AID_BLUETOOTH
/* bluetooth subsystem */
  #define AID_GRAPHICS
/* graphics devices */
  #define AID_INPUT
/* input devices */
  #define AID_AUDIO
/* audio devices */
  #define AID_CAMERA
/* camera devices */
  #define AID_LOG
/* log devices */
  2) 查看可用系统的权限
    $ adb shell
    # pm list permissions
5. framework层对权限的判断
  1)相关源码实现
    frameworks/base/services/java/com/android/server/PackageManagerService.java
    frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
  2)在系统层,如何查看某个应用的权限
    a)在应用进程开启时,ActivityManagerService.java会在logcat中输出该应用的权限,形如:
      I/ActivityManager(1730): Start proc com.anbdroid.phone for restart com.android.phone:pid=2605 uid=1000 gids={03}
      即它有03三个权限:访问蓝牙和建立socket
    b)注意:此打印输出在应用第一次启动时。如果进程已存在,需要先把对应进程杀掉,以保证该进程重新启动,才能显示
    c)具体实现,见:
      framewors/base/services/java/com/android/server/am/ActivityManagerService.java
      的函数startProcessLocked(),其中取其组信息的具本语句是
      mContext.getPackageManager()..packageName);
阅读(...) 评论()Android Framework(79)

分类:&&25175人阅读&&&
&&&&&&& Android是一个基于Linux内核的移动操作系统。Linux是一个支持多用户的系统,系统中的文件的访问权限是通过用户ID(UID)和用户组ID(GID)来控制的。换句话说,就是Linux的安全机制是基于UID和GID来实现的。Android在Linux内核提供的基于UID和GID的安全机制的基础上,又实现了一套称为Permission的安全机制,如图1所示:
图1 Linux的UID/GID安全机制与Android的Permission安全机制
& & & & 那么,这两个安全机制是如何对应起来的呢?
&&&&&&& 我们首先看一下Linux基于UID和GID的安全机制,它包含三个基本角色:用户、进程和文件,如图2所示:
图2 Linux基于UID/GID的安全机制的三个角色
& & & & Linux中的每一个用户都分配有一个UID,然后所有的用户又按组来进划分,每一个用户组都分配有一个GID。注意,一个用户可以属于多个用户组,也就是说,一个UID可以对应多个GID。在一个用户所对应的用户组中,其中有一个称为主用户组,其它的称为补充用户组。
& & & & Linux中的每一个文件都具有三种权限:Read、Write和Execute。这三种权限又按照用户属性划分为三组:Owner、Group和Other。如图3所示:
图3 Linux的文件权限划分
& & & & 从图3就可以看出文件acct:1. 所有者为root,可读可写可执行;2. 所有者所属的主用户组为root,在这个组中的其它用户可读可执行;3. 其余的用户可读可执行。
& & & & Linux中的每一个进程都关联有一个用户,也就是对应有一个UID,如图4所示:
图4 Linux的进程
& & & & &由于每一个用户都对应有一个主用户组,以及若干个补充用户组,因此,每一个进程除了有一个对应的UID之外,还对应有一个主GID,以及若干个Supplementary GIDs。这些UID和GID就决定了一个进程所能访问的文件或者所能调用的系统API。例如,在图4中,PID为340的进程一般来说,就只能访问所有者为u0_a19的文件。
& & & & &一个进程的UID是怎么来的呢?在默认情况下,就等于创建它的进程的UID,也就是它的父进程的UID。Linux的第一个进程是init进程,它是由内核在启动完成后创建的,它的UID是root。然后系统中的所有其它进程都是直接由init进程或者间接由init进程的子进程来创建。所以默认情况下,系统的所有进程的UID都应该是root。但是实际情况并非如此,因为父进程在创建子进程之后,也就是在fork之后,可以调用setuid来改变它的UID。例如,在PC中,init进程启动之后,会先让用户登录。用户登录成功后,就对应有一个shell进程。该shell进程的UID就会被setuid修改为所登录的用户。之后系统中创建的其余进程的UID为所登录的用户。
& & & & 进程的UID除了来自于父进程之外,还有另外一种途径。上面我们说到,Linux的文件有三种权限,分别是Read、Wirte和Execute。其实还有另外一个种权限,叫做SUID。例如,我们对Android手机进行root的过程中,会在里面放置一个su文件。这个su文件就具有SUID权限,如图5所示:
图5 su的SUID和SGID
& & & & 一个可执行文件一旦被设置了SUID位,那么当它被一个进程通过exec加载之后,该进程的UID就会变成该可执行文件的所有者的UID。也就是说,当上述的su被执行的时候,它所运行在的进程的UID是root,于是它就具有最高级别的权限,想干什么就干什么。
& & & & 与SUI类似,文件还有另外一个称为SGID的权限,不过它描述的是用户组。也就是说,一个可执行文件一旦被设置了GUID位,么当它被一个进程通过exec加载之后,该进程的主UID就会变成该可执行文件的所有者的主UID。
& & & & 现在,小伙伴们应该可以理解Android手机的root原理了吧:一个普通的进程通过执行su,从而获得一个具有root权限的进程。有了这个具有root权限的进程之后,就可以想干什么就干什么了。su所做的事情其实很简单,它再fork另外一个子进程来做真正的事情,也就是我们在执行su的时候,后面所跟的那些参数。由于su所运行在的进程的UID是root,因此由它fork出来的子进程的UID也是root。于是,子进程也可以想干什么就干什么了。
& & & & 不过呢,用来root手机的su还会配合另外一个称为superuser的app来使用。su在fork子进程来做真正的事情之前,会将superuser启动起来,询问用户是否允许fork一个UID是root的子进程。这样就可以对root权限进行控制,避免被恶意应用偷偷地使用。
& & & & 这里是su的源代码,小伙伴们可以根据上面所讲的知识读一读:。
& & & & 在传统的UNIX以及类UNIX系统中,进程的权限只划分两种:特权和非特权。UID等于0的进程就是特权进程,它们可以通过一切的权限检查。UID不等于0的进程就非特权进程,它们在访问一些敏感资源或者调用一个敏感API时,需要进行权限检查。这种纯粹通过UID来做权限检查的安全机制来粗放了。于是,Linux从2.2开始,从进程的权限进行了细分,称为Capabilities。一个进程所具有Capabilities可以通过capset和prctl等系统API来设置。也就是说,当一个进程调用一个敏感的系统API时,Linux内核除了考虑它的UID之外,还会考虑它是否具有对应的Capability。
& & & & 这里就是Linux所设计的Capabilities列表,有兴趣的小伙伴可以再读一读:。
& & & & 以上就是Linux基于UID/GID的安全机制的核心内容。接下来我们再看Android基于Permission的安全机制,它也有三个角色:apk、signature和permission,如图6所示:
图6 Android的Permission安全机制
& & & & Android的APK经过PackageManagerService安装之后,就相当于Linux里面的User,它们都会被分配到一个UID和一个主GID,而APK所申请的Permission就相当于是Linux里面的Supplementary GID。
& & & & 我们知道,Android的APK都是运行在独立的应用程序进程里面的,并且这些应用程序进程都是Zygote进程fork出来的。Zygote进程又是由init进程fork出来的,并且它被init进程fork出来后,没有被setuid降权,也就是它的uid仍然是root。按照我们前面所说的,应用程序进程被Zygote进程fork出来的时候,它的UID也应当是root。但是,它们的UID会被setuid修改为所加载的APK被分配的UID。
& & & &参照一文的分析,ActivityManagerService在请求Zygote创建应用程序进程的时候,会将这个应用程序所加载的APK所分配得到的UID和GID(包括主GID和Supplementary
GID)都收集起来,并且将它们作为参数传递给Zygote进程。Zygote进程通过执行函数来fork应用程序进程:
* Utility routine to fork zygote and specialize the child process.
static pid_t forkAndSpecializeCommon(const u4* args, bool isSystemServer)
uid_t uid = (uid_t) args[0];
gid_t gid = (gid_t) args[1];
ArrayObject* gids = (ArrayObject *)args[2];
pid = fork();
if (pid == 0) {
err = setgroupsIntarray(gids);
err = setgid(gid);
err = setuid(uid);
&参数args[0]、args[1]和args[]保存的就是APK分配到的UID、主GID和Supplementary GID,它们分别通过setuid、setgid和setgroupsIntarray设置给当前fork出来的应用程序进程,于是应用程序进程就不再具有root权限了。
& & & & 那么,Signature又充当什么作用呢?两个作用:1. 控制哪些APK可以共享同一个UID;2. 控制哪些APK可以申请哪些Permission。
& & & & 我们知道,如果要让两个APK共享同一个UID,那么就需要在AndroidManifest中配置android:sharedUserId属性。PackageManagerService在安装APK的时候,如果发现两个APK具有相同的android:sharedUserId属性,那么它们就会被分配到相同的UID。当然这有一个前提,就是这两个APK必须具有相同的Signature。这很重要,否则的话,如果我知道别人的APK设置了android:sharedUserId属性,那么我也在自己的APK中设置相同的android:sharedUserId属性,就可以去访问别人APK的数据了。
& & & & 除了可以通过android:sharedUserId属性申请让两个APK共享同一个UID之外,我们还可以将android:sharedUserId属性的值设置为“android.uid.system”,从而让一个APK的UID设置为1000。UID是1000的用户是system,系统的关键服务都是运行在的进程的UID就是它。它的权限虽然不等同于root,不过也足够大了。我们可以通过Master Key漏洞来看一下有多大。
& & & & Master Key漏洞发布时,曾轰动了整个Android界,它的具体情况老罗就不分析了,网上很多,这里是一篇官方的文章:。现在就简单说说它是怎么利用的:
& & & & 1. 找到一个具有系统签名的APP,并且这个APP通过android:sharedUserId属性申请了android.uid.system这个UID。
& & & & 2. 通过Master Key向这个APP注入恶意代码。
& & & & 3. 注入到这个APP的恶意代码在运行时就获得了system用户身份。
& & & & 4. 修改/data/local.prop文件,将属性ro.kernel.qemu的值设置为1。
& & & & 5. 重启手机,由于ro.kernel.qemu的值等于1,这时候手机里面的adb进程不会被setuid剥夺掉root权限。
& & & & 6. 通过具有root权限的adb进程就可以向系统注入我们熟悉的su和superuser.apk,于是整个root过程完成。
& & & & 注意,第1步之所以要找一个具有系统签名的APP,是因为通过android:sharedUserId属性申请android.uid.system这个UID需要有系统签名,也就是说不是谁可以申请system这个UID的。另外,/data/local.prop文件的Owner是system,因此,只有获得了system这个UID的进程,才可以对它进行修改。
& & & & 再说说Signature与Permission的关系。有些Permission,例如INSTALL_PACKAGE,不是谁都可以申请的,必须要具有系统签名才可以,这样就可以控制Suppementary GID的分配,从而控制应用程序进程的权限。具有哪些Permission是具有系统签名才可以申请的,可以参考官方文档:,就是哪些标记为“Not
for use by third-party applications”的Permission。
& & & & 了解了Android的Permission机制之后,我们就可以知道:
& & & & &1. Android的APK就相当于是Linux的UID。
& & & & &2. Android的Permission就相当于是Linux的GID。
& & & & &3. Android的Signature就是用来控制APK的UID和GID分配的。
& & & & &这就是Android基于Permission的安全机制与Linux基于UID/GID的安全机制的关系,概括来说,我们常说的应用程序沙箱就是这样的:
图7 Android的Application Sandbox
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:327130次
积分:6228
积分:6228
排名:第3313名
原创:240篇
转载:101篇
评论:135条Android下的permission和gid - 推酷
Android下的permission和gid
Android是在linux基础上构建的,权限的管理即要依赖apk中的permission,也要考虑和linux的uid/gid的方式结合。虽然很多操作可以在java层完成,但诸如设备文件的访问,又要回归到传统的uid/gid管理模式,比如设备文件
crw-rw---- bluetoothnet_bt_stack 204,
13:24 ttyAMA4
net_bt_stack组对设备文件是可以操作的,如果查看/system/etc/permissions/platform.xml
&permissionname="android.permission.BLUETOOTH_ADMIN"&
&groupgid="net_bt_admin"/&
&/permission&
&permissionname="android.permission.BLUETOOTH"&
&groupgid="net_bt"/&
&/permission&
&permissionname="android.permission.BLUETOOTH_STACK"&
&groupgid="net_bt_stack"/&
&/permission&
&permissionname="android.permission.NET_TUNNELING"&
&groupgid="vpn"/&
&/permission&
&permissionname="android.permission.INTERNET"&
&groupgid="inet"/&
&/permission&
&permissionname="android.permission.READ_LOGS"&
&groupgid="log"/&
&/permission&
&permissionname="android.permission.WRITE_MEDIA_STORAGE"&
&groupgid="media_rw"/&
&groupgid="sdcard_rw"/&
&/permission&
可以看到,如果apk申请了android.permission.BLUETOOTH_STACK权限,它的进程将具备linux的uid/gid管理体系下的net_bt_stack组权限
运行该apk,然后查看/proc/pid/status,Groups中也直接阐明了这一点
S (sleeping)
TracerPid:
FDSize: 64
Groups: 08
但这并不意味着,直接su app_id得到的shell具备该gid。Android下的su并不是基于/etc/passwd等文件实现的完整权限切换,仅保留了uid的信息。不过Android提供的run-as可以完整切换权限,得到具备该gid的shell
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致13745人阅读
Android(12)
& & & Android 安全机制来源于Linux,并且以Linux权限管理为基础,要了解Android的安全机制,需要从linux中的安全机制了解开始,而用户的权限管理又是linux安全机制的最基本的一个组成
2、linux中的用户(UID)、组(GID)、进程(PID)
& & & 在 Linux 中,一个用户 UID 标示一个给定用户。Linux系统中的用户(UID)分为3类,即普通用户、根用户、系统用户。
& & & 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。Linux有着极为详细的权限设置,所以一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作,以及操作属于该用户的文件。通常普通用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号。
& & & 根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。所以root用户也是系统里面最具危险性的用户,root用户甚至可以在系统正常运行时删除所有文件系统,造成无法挽回的灾难。所以一般情况下,使用root用户登录系统时需要十分小心。
& & & 系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499。下面给出的示例显示的是目前系统运行的进程,第一列是运行该进程的用户。
& & & &组(GID)又是什么呢?事实上,在Linux下每个用户都至少属于一个组。举个例子:每个学生在学校使用学号来作为标识,而每个学生又都属于某一个班级,这里的学号就相当于UID,而班级就相当于GID。当然了,每个学生可能还会同时参加一些兴趣班,而每个兴趣班也是不同的组。也就是说,每个学生至少属于一个组,也可以同时属于多个组。在Linux下也是一样的道理。
3、linux中进程的用户管理 (PID与UID、GID的关系)
& & & 每个进程都拥有真实的用户、组(uid、gid),有效的用户、组(euid、egid),保存的设置用户、组(suid、sgid),还有linux中专门用于文件存储存取的用户、组id(fsuid、fsgid对于unix系统没有这两个fields)。现说明进程中每种类型用户的功能:
& & & (1)真实的用户、组(uid、gid):进程的真正所有者。每当用户在shell终端登录时,都会将登录用户作为登录进程的真正所有者。通过getuid来获得进程的真正用户所有者,修改进程的真正用户所有者可以通过setuid、seteuid、setresuid、setreuid。
& & & (2)有效的用户、组(euid、egid):进程的有效用户、组。进程所执行各种操作所允许的权限(process credentials)是依据进程的有效用户来判断的,(在linux系统中(内核2.4以上)又引入了一个新的进程权限管理模型process capabilities,通过process capabilities来确定进程所允许的各种操作[可参看《深入理解linux内核》table 20-3])。通过geteuid来获得进程的有效用户,修改进程的有效用户可以通过setuid、seteuid、setresuid、setreuid、seteuid。
& & & (3)文件系统的用户、组(fsuid、fsgid):用于进行文件访问的用户、组,这是linux系统中新引入的一类用户、组,对于unix系统文件的访问是通过euid来判断,没有函数获得进程的fsuid,用于修改有效用户的函数都会同时修改fsuid,如果要单独修改fsuid,而不修改euid,可以调用setfsuid。
& & & (4)保存的设置用户、组(suid、sgid):保存的设置用户、组。进程中该类型的用户、组主要的用处是用于还原有效用户,观察到对于非超级用户用于修改有效用户的各个函数setuid、seteuid、setresuid、setreuid、seteuid普遍有一个前提条件就是如果修改后的有效用户是原先的suid则允许修改,利用这一点,进程可以修改有效用户到一个新用户,然后还原到原来的值(原来的值保存在保存设置的用户)。通过getresuid来获得进程的真实用户、有效用户、保存的设置用户。
4、Android 系统中的UID、GID、GIDS与PID
& & & & 在 Android 上,一个用户 UID 标示一个应用程序。应用程序在安装时被分配用户 UID,应用程序在设备上的存续期间内,用户 UID 保持不变。对于普通的应用程序,GID即等于UID。
& & & & GIDS 是由框架在 Application 安装过程中生成,与 Application 申请的具体权限相关。 如果 Application 申请的相应的 permission 被 granted ,而且有对应的GIDS, 那么 这个Application 的 gids 中将 包含这个 gids。记住权限(GIDS)是关于允许或限制应用程序(而不是用户)访问设备资源。
& & & & Android 使用沙箱的概念来实现应用程序之间的分离和权限,以允许或拒绝一个应用程序访问设备的资源,比如说文件和目录、网络、传感器和 API。为此,Android 使用一些 Linux 实用工具(比如说进程级别的安全性、与应用程序相关的用户和组 ID,以及权限),来实现应用程序被允许执行的操作。
图 1. 两个 Android 应用程序,各自在其自己的基本沙箱或进程上
& & & & Android 应用程序运行在它们自己的 Linux 进程上,并被分配一个惟一的用户 ID。默认情况下,运行在基本沙箱进程中的应用程序没有被分配权限,因而此类应用程序访问系统或资源受到限制,Android 应用程序只能通过应用程序的 manifest 文件请求权限。
& & & & 不同的应用程序可以运行在相同的进程中。对于此方法,首先必须使用相同的私钥签署这些应用程序,然后必须使用 manifest 文件给它们分配相同的 Linux 用户 ID,这通过用相同的值/名定义 manifest 属性 android:sharedUserId 来做到,从而共享对其数据和代码的访问,如图2所示
图 2. 两个 Android 应用程序,运行在同一进程上
在 Android 上,一个应用程序只有一个UID,当然多个应用程序也可以共享一个UID。
对 于普通应用程序来说, gid 等于 uid 。由于每个应用程序的 uid 和 gid 都不相同, 因此不管是 native 层还是 java 层都能够达到保护私有数据的作用 。
一个GIDS相当于一个权限的集合,一个UID可以关联GIDS,表明该UID拥有多种权限
一个进程就是host应用程序的沙箱,里面一般有一个UID和多个GIDS,每个进程只能访问UID的权限范围内的文件和GIDs所允许访问的接口,构成了Android最基本的安全基础。
后续还会介绍 、Android 签名机制、Selinux Android 。
6、参考文献
1、http://blog.csdn.net/nuoline/article/details/8610811
2、/art/710.htm
3、/wenda/174474.html
4、/zhiyinjixu/articles/2252371.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:172266次
积分:1706
积分:1706
排名:千里之外
原创:24篇
转载:29篇
评论:14条
(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3)(6)(3)(3)(1)(4)(1)(5)(5)(1)(3)(1)(5)

我要回帖

更多关于 spp2 nf巡检测试仪 的文章

 

随机推荐