Android Notes(System Info Manager Safety)

Android System Info

  • android.os.Build
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Build.BOARD 主板
    Build.BRAND 系统定制商
    Build.SUPPORTED_ABIS CPU指令集
    Build.DEVICE 设备参数
    Build.DISPLAY 显示屏参数
    Build.FINGERPRINT 唯一编号
    Build.SERIAL 硬件序列号
    Build.ID 修订版本
    Build.MANUFACTURER 硬件制造商
    Build.MODEL 版本
    Build.HARDWARE 硬件名
    Build.PRODUCT 手机产品名
    Build.TAGS Build 标签
    Build.TYPE Build 类型
    Build.VERSION.CODENAME 开发代号
    Build.VERSION.INCREMENTAL 源码控制版本号
    Build.VERSION.RELEASE 版本字符串
    Build.VERSION.SDK_INT 版本号
    // The following properties only make sense for internal engineering builds.
    Build.HOST Host值
    Build.USER User名
    Build.TIME 编译时间
  • SystemProperty

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    String getProperty
    os.version os版本
    os.name os名称
    os.arch os架构
    user.home Home属性
    user.name Name属性
    user.dir Dir属性
    user.timezone 时区
    path.separator 路径分隔符
    line.separator 行分隔符
    file.separator 文件分隔符
    java.vendor.url Java vendor url属性
    java.class.path Java Class属性
    java.class.version Java Class版本
    java.vendor Java vendor属性
    java.version Java版本
    java.home Java Home属性
  • 应用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    String board=Build.BOARD
    String brand=Build.BRAND

    String os_version=System.getProperty("os.version")
    String os_name=System.getProperty("os.name")

    cd system/
    cat build.prop 查看build信息

    getprop ro.build.id 获取对应属性值
    MRA58K

    cd proc/
    ls -al 查看文件详细信息
    cat cpuinfo 查看cpu信息

PackageManager(应用包信息)

1
2
3
4
5
6
7
8
9
getPackageManager 返回PackageManager对象
getApplicationInfo 返回指定包名的ApplicationInfo
getApplicationIcon 返回指定包名的Icon
getInstalledApplication 以ApplicationInfo形式返回安装的应用
getInstalledPackages 以PackageInfo形式返回安装的应用
queryIntentActivities 返回指定intent的ResolveInfo对象,Activity集合
queryIntentServices 返回指定intent的ResolveInfo对象,Service集合
resolveActivity 返回指定intent的Activity
resolveService 返回指定intent的Service
  • 判断APP类型

    1
    2
    3
    4
    5
      app.flags&ApplicationInfo.FLAG_SYSTEM!=0为系统应用
    app.flags&ApplicationInfo.FLAG_SYSTEM<=0则为第三方应用
    特殊情况,系统应用升级后也成为第三方应用 app.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP!=0
    app.flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE!=0为安装在SDCard应用
    List<ApplicationInfo> list=pm.getInstalledApplications(PackManager.GET_UNINSTALLED_PACKAGES/MATCH_UNINSTALLED_PACKAGES);

ActivityManager(运行应用程序信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ActivityManager.MemoryInfo 全局内存使用信息
availMem 系统可用内存
totalMem 总内存
threshold 低内存的阈值
lowMemory 是否处于低内存

Debug.MemoryInfo 进程下的内存信息

RunningAppProcessInfo
processName 进程名
pid 进程pid
uid 进程uid
pkgList 该进程下所有包

RunningServiceInfo
activeSince 第一次激活的时间,方式
foreground 服务是否在前台运行


List<RunningAppProcessInfo> list=am.getRunningAppProcess();
Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
  • 查看packages.xml获取系统信息
    1
    adb pull data/system/packages.xml
1
2
3
codepath apk安装路径
system/app 存放系统或厂商定制apk
data/app 存放第三方apk

Android安全

  • 代码混淆proguard,混淆代码,替换命名,压缩代码,优化编译后的字节码
  • AndroidManifest 权限声明,权限检查

    1
    2
    3
    4
    检测操作者权限
    判断permission名称,如果为空,直接返回DENIED
    判断UID,如果为0,则为Root权限,不做权限控制;如果为system server的uid,不做权限控制;如果uid与参数中的请求uid不同,则返回DENIED
    PackageManagerService.checkUidPermission()判断uid是否有相应的权限,系统级的platform.xml中进行查找
  • 数字证书,APP签名文件

  • Linux内核访问权限控制,System,root用户才有权限访问系统文件
  • 虚拟机沙箱隔离,每个APP有与之对应的UID
  • 隐患

    1
    2
    3
    代码漏洞:LaunchAnyWhere,FakeID Bug
    Root风险
    安全机制不健全
  • 反编译工具

    • apktool

      1
      2
      3
      4
      反编译 apktool.jar d test.apk
      生成test文件夹
      重新打包 apktool.jar b test.apk
      生成重新打包的apk,在dist文件夹中
    • Dex2jar,jd-gui

      1
      2
      3
      dex2jar.bat classes.dex
      生成classes.jar文件
      使用jd-gui查看源码
    • apk加密

      1
      2
      3
      4
      5
      6
      7
      buildTypes {
      release{
      minifyEnabled false //以前属性名是runProguard
      proguardFiles getDefaultProguardFile('proguard-android.txt'), //系统默认
      'proguard-rules.pro' // 项目自定义
      }
      }
    • 加固

willkernel wechat
关注微信公众号
帅哥美女们,请赐予我力量吧!