Android羣英傳學習筆記-AM&PM

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代碼反編譯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章