Android群英传学习笔记-AM&PM

来源:互联网 发布:衬衫品牌 知乎 编辑:程序博客网 时间:2024/04/30 05:59

1、系统信息获取

android.os.Build--系统编译时大量的设备、配置信息

    包括Build.BOARD//主板  BRAND//定制商  DEVICE//设备参数  DISPLAY//显示屏参数  PRODUCT//手机产品名  VERSION.SDK_INT//版本号

  1. String brand = Build.BRAND;

SystemProperty--系统配置属性值和参数

    os.version//OS版本  name//OS名称

  1. String os_version = System.getProperty("os.version");

adb shell中查看

    进入/system目录 cat build.prop

    getprop ro.build.id

    /proc目录 cat cpuinfo

2、Apk应用信息获取-PackageManager

    当前应用的flags & ApplicationInfo.FLAG_SYSTEM != 0则为系统应用

    flags & ApplicationInfo.FLAG_SYSTEM <= 0则为第三方应用

    flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE != 0则为安装在SD卡应用

    当系统应用升级后成为第三方应用:

    flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0

  1. PackageManager pm = this.getPackageManager();//获取PackageManager对象
  2. List<ApplicationInfo> list = pm
  3.  .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

3、Apk应用信息获取-ActivityManager

    获取在运行的应用程序信息

    ActivityManager.MemoryInfo-系统全局内存信息

    availMem--系统可用内存,totalMem--总内存,threshold--低内存阈值,lowMemory--是否处于低内存

    Debug.MemoryInfo-统计进程下的内存信息

    RunningAppProcessInfo-运行进程的信息

    processName--进程名,pid--进程pid,uid--进程uid,pkgList-该进程下的所有包

    RunningServiceInfo-运行服务信息

    activeSince--第一次被激活时间、方式,foreground--是否在后台运行

  1. ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
  2. List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();
  3. ActivityManager.RunningAppProcessInfo info = infos.get(0);
  4. int pid = info.pid;
  5. int uid = info.uid;
  6. String processName = info.processName;
  7. Debug.MemoryInfo[] = memoryInfos = am.getProcessMemoryInfo(new int[]{pid});
  8. int memorySize = memoryInfos[0].getTotalPss();


4、Android安全机制

    4.1代码安全机制-代码混淆proguard

build.gradle(Module:app)文件

  1. buildTypes{
  2.    release{
  3.        minifyEnabled false //是否启用混淆
  4.        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  5.    }//proguard-android.txt系统默认混淆文件,proguard-rules.pro自定义混淆文件
  6. }

    4.2应用接入权限控制-Mainifest文件权限声明、权限检查

    判断permission名称:若为空直接PERMISSION_DENIED

    判断Uid:0-Root权限,System Server的Uid,Uid与参数中的请求Uid不同PERMISSION_DENIED

    通过PackageManagerService.checkUidPermission()判断Uid是否具有权限

    4.3应用签名机制-数字证书

    4.4Linux内核层安全机制-Uid、访问权限控制

    4.5Android虚拟机沙箱机制-沙箱隔离

5、APK反编译

    apktool实现XML文件的反编译,Dex2jar、jd-gui实现java代码反编译。

0 0
原创粉丝点击