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代码反编译。