1. Android系统信息获取

要获取系统的配置信息,通常可以从以下两个方面获取

1.1. android.os.Build

Build类包含了系统编译时的大量设备、配置信息

1.2. SystemProperty

SystemProperty包含了许多系统配置属性值和参数,很多信息与通过Build获取的值是相同的

1.3. Android系统信息实例

String board = Build.BOARD;
String brand = Build.BRAND;String os_version = System.getProperty("os.version");
String os_name = System.getProperty("os.name");

系统信息最根本的来源在system/build.prop文件中,包含了很多RO属性值。进入/system目录,通过cat build.prop命令查看文件信息。同时,在adb shell中,还可以通过getprop来获取对应属性的值,如getprop ro.build.id
除了上面两个方法,Android系统还有/proc目录来存储系统信息,这里的信息比通过Build获得的信息更加丰富

2. Android Apk应用信息获取之PackageManager

  • ActivityInfo: 封装了在Manifest文件中<activity></activity><receiver></receiver>之间的所有信息,包括nameiconlabellaunchmod
  • ServiceInfo: 封装了<service></service>之间的所有信息
  • ApplicationInfo: 封装了<application></application>之间的信息。ApplicationInfo包含很多Flag,FLAG_SYSTEM表示为系统应用,FLAG_EXTERNAL_STORAGE表示为安装在SDCard上的应用
  • PackageInfo: 封装Manifest文件的相关节点信息,而PackageInfo包含了所有的Activity、Service等信息
  • ResolveInfo: 封装的是包含<intent>信息的上一级信息,用来帮助找到那些包含特定Intent条件的信息

有了上面这些用于封装的Bean对象之后,PackageManager就可以通过调用各种方法,返回不同类型的Bean对象了

  • 如果当前应用的flags & ApplicationInfo.FLAG_SYSTEM != 0则为系统应用
  • 如果当前应用的flags & ApplicationInfo.FLAG_SYSTEM == 0则为第三方应用
  • 当系统应用经过升级后,也将成为第三方应用:flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0
  • 如果当前应用的flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE != 0则为安装在SDCard上的应用

3. Android Apk应用信息获取之ActivityManager

PackageManager重点在于获得应用的包信息,而ActivityManager重点在于获得在运行的应用程序信息

  • ActivityManager.MemoryInfo: MemoryInfo有几个非常重要的字段:availMem系统可用内存,totalMem总内存,threshold低内存的阈值,lowMemory是否处于低内存
  • Debug.MemoryInfo: ActivityManager.MemoryInfo通常用于获取全局的内存使用信息,而Debug.MemoryInfo用于统计进程下的内存信息
  • RunningAppProcessInfo: 运行进程的信息,存储的字段就是进程相关的信息,processName进程名,pid进程pid,uid进程uid,pkgList该进程下的所有包
  • RunningServiceInfo: 用于封装运行的服务信息,同样包含了一些服务进程的信息,同时还有一些其他信息

4. 解析Packages.xml获取系统信息

在系统初始化的时候,PackageManager的底层实现类PackageManagerService会去扫描系统中的一些特定的目录,并解析其中的Apk文件。同时,Android把它获得的应用信息,保存在/data/system/packages.xml中,当系统中的Apk安装、删除、升级时,它也会被更新

  • <permissions>标签:定义了目前系统中的所有权限,并分为两类:系统定义的(package属性为Android)和Apk定义的(package属性为Apk的包名)
  • <package>标签:代表一个Apk的属性。name: Apk的包名,codePath: Apk安装路径,主要有/system/app和/data/app两种,userId: 用户ID, version: 版本号
  • <perms>标签:对应Apk的AndroidManifest文件中的标签,记录Apk的权限信息

5. Android安全机制

5.1. Android安全机制简介

  1. 第一道防线:代码安全机制——代码混淆proguard
  2. 第二道防线:应用接入权限控制——AndroidManifest文件权限声明、权限检查机制
  3. 第三道防线:应用签名机制——数字证书
    数字证书用于保护App的作者对其App的信任关系,只有拥有相同数字签名的App,才会在升级时被认为是同一App
  4. 第四道防线:Linux内核层安全机制——Uid、访问权限控制
    Android继承了Linux的安全特性,比如文件访问机制
  5. 第五道防线:Android虚拟机沙箱机制——沙箱隔离
    Android的App运行在虚拟机中,因此才有沙箱机制,可以让应用之间相互隔离

5.2. Android系统安全隐患

  1. 代码漏洞
  2. Root风险
  3. 安全机制不健全
  4. 用户安全意识
  5. Android开发原则与安全
    Android与iOS系统一个非常显著的区别就是一个是开放系统一个是封闭系统

5.3. Android Apk反编译

  1. apktool
    执行反编译命令:apktool_2.0.0b7.jar d test.apk
    重新打包:apktool_2.0.0b7.jar b test 执行该命令后,在test文件夹下就会生成两个新的文件夹,重新打包的Apk在dlist目录下

  2. Dex2jar、jd-gui
    用解压缩工具解压Apk后的那个文件夹,有一个classes.dex文件
    反编译dex文件:d2j-dex2jar.bat classes.dex
    用jd-gui打开生成的classes-dex2jar.jar文件

5.4. Android Apk加密

为了能够对编译好的Java Class文件进行一些保护,通常会使用ProGuard来对Apk进行混淆处理,用无意义的字母来重命名类、字段、方法和属性

《Android群英传》读书笔记9.Android系统信息与安全机制相关推荐

  1. android 群英传笔记,Android 群英传读书笔记1

    Android中每个控件都会在界面上占据一块矩形的区域,在Android中控件被分为两种,①VIew ②ViewGroup  ViewGroup可以包含多个View 或者Viewgroup 这样在界面 ...

  2. Android群英传读书笔记——第十二章:Android 5.X新特性详解

    第十二章目录 12.1 Android5.X UI设计初步 12.1.1 材料的形态模拟 12.1.2 更加真实的动画 12.1.3 大色块的使用 12.2 Material Design主题 12. ...

  3. Android群英传读书笔记——Android开发工具

    2.1  Android Studio配置 2.1.1  配置JDK (1)系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) (2) ...

  4. Android群英传读书笔记-2D绘图基础

    系统通过 Canvas 为我们提供了一些基础的绘图 API : canvas.drawPoint(float x, float y, @NonNull Paint paint); 作用:绘制点. 参数 ...

  5. android群英传神兵利器pdf,《Android群英传:神兵利器》勘误

    1勘误 一晃,我的新书<Android群英传:神兵利器>上市好多天了,有不少朋友已经拿到书了.本来以为,这次我看了不下十遍,再加上编辑们的校对,应该不会有很多勘误了吧~ 可事实证明,我还是 ...

  6. android群英传 自定义滑动view,Android群英传学习之路-View的滑动

    滑动效果是如何产生的? 滑动一个View从本质上来说就是移动一个View,改变其当前的坐标.所以,想要滑动一个View,就必须监听该View的触摸事件,并且根据事件的坐标,不断的改变View的坐标从而 ...

  7. Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

    Android群英传神兵利器读书笔记--第三章:Android Studio奇技淫巧 这篇文章篇幅较长,可以使用版权声明下面的目录,找到感兴趣的进行阅读 目录 3.1 Android Studio使用 ...

  8. 《Android群英传》读书笔记---10.2(终篇)

    <Android群英传>读书笔记-10.2 标签(): android中级 读书笔记 Activity过渡动画 曾经的 Android在Activity之间进行跳转的时候,只是非常生硬的切 ...

  9. Android群英传笔记——第九章:Android系统信息和安全机制

    Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...

  10. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...

最新文章

  1. 读写锁ReadWriteLock和缓存实例
  2. Effective Java之保护性编写readObject方法(七十六)
  3. Go-json解码到结构体
  4. 使用Oracle Wrap工具加密你的代码
  5. paip.手机ROOT过程总结
  6. 【工具】-13UML泳道图
  7. ubuntu ssh远程连接
  8. 面食有哪些 面食的种类大全
  9. PS时间轴制作动态图
  10. 正则表达式遇到特殊字符
  11. 全国大学生智能汽车竞赛图像采集处理上位机开源!
  12. 怎么利用计算机为学生成绩进行排名,使用excel为学生成绩排序的方法和步骤
  13. HTTP Digest Authentication 使用心得
  14. 解决VS编译中文报错 error C2001:常量中有换行符
  15. mysql里面的时间函数
  16. 小程序使用canvas绘画、签名。wx.canvasToTempFilePath安卓机生成图片背景色为黑色
  17. C++程序设计基础 小母牛问题
  18. 马云为何放得下辛苦创立的“阿里帝国”?
  19. 华展云-让展览更高效 2017第十五届中国国际铸造博览会 第十七届中国国际冶金工业展览会 第十五届中国国际工业炉展览会会刊(参展商名录)
  20. Stata-倍分法: 不满足平行趋势假设咋办?

热门文章

  1. Spring拦截器配置详解(如何定义一个拦截器)
  2. python3.6源码编译安装 解决SSL报错
  3. OpenShift 部署应用
  4. 【​CES观察】我单反相机都带了,你就给我看这个?
  5. 技术至简-2:分集与交织
  6. 软考系统架构师教材推荐和学习方法
  7. 笨方法学python 习题6
  8. 矩阵变换:矩阵是怎样变换向量的
  9. 用EasyRTSPServer模拟摄像机RTSP流实现RTSP摄像机模拟器
  10. Numpy攻略系列:repeat函数