1、系統信息獲取
android.os.Build--系統編譯時大量的設備、配置信息
包括Build.BOARD//主板 BRAND//定製商 DEVICE//設備參數 DISPLAY//顯示屏參數 PRODUCT//手機產品名 VERSION.SDK_INT//版本號
String brand = Build.BRAND;
SystemProperty--系統配置屬性值和參數
os.version//OS版本 name//OS名稱
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
PackageManager pm = this.getPackageManager();//獲取PackageManager對象
List<ApplicationInfo> list = pm
.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--是否在後臺運行
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();
ActivityManager.RunningAppProcessInfo info = infos.get(0);
int pid = info.pid;
int uid = info.uid;
String processName = info.processName;
Debug.MemoryInfo[] = memoryInfos = am.getProcessMemoryInfo(new int[]{pid});
int memorySize = memoryInfos[0].getTotalPss();
4、Android安全機制
4.1代碼安全機制-代碼混淆proguard
build.gradle(Module:app)文件
buildTypes{
release{
minifyEnabled false //是否啓用混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}//proguard-android.txt系統默認混淆文件,proguard-rules.pro自定義混淆文件
}
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代碼反編譯。