Android群英传笔记-Android系统安全与安全机制

系统消息

Android系统消息获取

获取Android系统信息,代码中可以两个方面获取
android.os.Build
System.Property。

当然,也可以通过手机ADB来获取设备信息,在/proc目录中查看,或者使用getprop命令

android.os.Build

包含系统编译时大量设备,配置信息
例如
Build.BRAND//Android系统定制商
Build.DEVICE //设备参数
Build.FINGERPRINT //唯一编号
Build.Model //版本
Build.SERLAL //硬件设备序列号 这个参数之前一个项目中应用到过
还有其他参数,使用时查寻即可

SystemProperty

也是包含系统的一些配置属性值和参数,许多获取值和上面的os.Build是一样的。常用的有系统版本,java版本,java Class版本等属性。

Android apk 应用信息获取

查看apk应用信息,有两个强大的助手,PM(PackageManger)和AM(ActivityManger),这两个也是ADB的两个指令集。我们这里讨论如何在代码中使用他们获取应用信息。二者各有侧重

PackageManager

PackageManger主要管理mainifest文件里的信息,包含Activity的配置信息以及mainnifset文件的节点信息。这些信息被封装在一些类里面,我们可以获取使用。

  • ActivityInfo:包含 < activity > 标签和< receiver>标签里的所有信息。例如name,icon,label,launchmod等等。
  • ServiceInfo:包含< service>里的信息
  • AplicationInfo:包含< application>里的所有信息,这里面包含许多Flag,例如FLAG_SYSTEM表示系统应用,FLAG_EXTERNAL_STORAGE表示安装在sd卡上的应用,这些Flag,可以用来判断应用类型
  • PackageInfo:包含mainnifest文件里 所有 activity与service的信息
  • ResolveInfo:封装< intent>上一级的信息,可以是ActivityInfo和ServiceInfo等包含Intent的信息。用来帮助我们找到那些包含特定Intent条件的信息,比如分享功能,播放功能。需要去学习一下intent-filter 标签的知识

RespvleageInfo的应用

https://blog.csdn.net/wang_yubin/article/details/8564335?_t_t_t=0.8696009771752313

知道这些类的意义之后,只用根据功能,通过相应的方法获取到类,然后解析使用即可。具体使用可以看书里的例子。

ActivityMangaer

PackageManager重点在于获取应用包信息(mainnifest文件节点信息),ActivityManager重点获取运行的应用信息

内存信息

  • ActivityManager.MemoryInfo: 全局内存信息,包含十分重要的字段,availMem-系统可用内存,totalMerm-总内存,threshold-低内存阈值,lowMermory-是否处于低内存
  • Debug.MemoryInfo:系统进程下的内存信息
  • RunningAppProcessInfo:运行进程信息,processName-进程名,pid-进程pid(进程唯一标识),uid-进程uid(一般表示进程的创建者)。pkgList-该进程下的所有包
  • RunningServiceInfo:封装运行的服务信息,包含一些服务进程信息,例如activeSince-服务 被第一次激活的世界,方式。forground-服务是否在后台运行。

Packages.xml文件解析

该文件相当与系统的应用花名册,系统apk进行安装,升级,删除时,它会被更新。目录位于/data/system/
可以通过ADB Pull命令将它导入本地。

  • < Permissions>标签:定义目前系统所以权限,包含系统的和apk自定义的

  • < Package>标签:代表一个apk的属性,包含包名与路径(厂商app和三方app目录不同)等等

  • < perms>:对应mainnifest文件中的标签

Android安全机制

Android安全机制

五道防线

  • 代码混淆 proguard:混淆关键代码,压缩代码,优化编译后的字节码。代码混淆在开发中是一定会使用到的,需要进行学习
  • 权限控制:AndroidMainifest文件权限声明,权限检查机制。一般使用者,会使用permissionX等框架进行权限动态申请。
  • 应用签名机制-数字证书:app签名用于保护作者对其app的信任关系,只有拥有相同数字签名的app,才被认为是同一App。安卓系统不会安装没有签名的app。
  • Linux内核层安全机制-Uid,访问权限控制:安卓继承linux的安全特性,文件访问机制-user,group,other与读(r),写(w),执行(x)的不同组合实现权限控制。一般只有system和root用户才能访问系统文件
  • 安卓虚拟机-沙箱隔离:每个安卓app运行在单独的虚拟机中,使得应用之间相互隔离,通常情况下,不能相互访问。一个应用崩溃,也不会导致其他app异常。

一些apk反编译工具的介绍,安卓安全隐患,见书里。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值