APP过等保要用到的安全检测,支持调试检测/签名校验/Root检测/网络代理检测等,功能高度灵活可定制。
这是一个Android的安全环境检测库,项目中接入该库可以提升APP的安全等级,可用于过等保时的安全扫描。
功能列表:
1,在你的项目根目录的build.gradle添加仓库:
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
2,在mudule的build.gradle中添加依赖:
dependencies {
implementation 'com.github.elivenlzy:androidsafecheck:0.0.2'
}
一,一键快速集成,在APP启动页加上如下代码即可获得本库提供的默认的全部功能:
TaskQueue taskQueue = new TaskQueue();
taskQueue.addTask(new DebugCheckTask(this));
taskQueue.addTask(new PageHackCheckTask(this));
taskQueue.addTask(new SignCheckTask(this, RIGHT_CER));
taskQueue.addTask(new RootCheckTask(this));
taskQueue.addTask(new SimulatorCheckTask(this));
taskQueue.addTask(new NetProxyCheckTask(this, false));
SafeCheckService.startCheck(taskQueue, new OnTaskListener() {
@Override
public void onStart() {
Log.d(TAG, "安全检查开始");
}
@Override
public void onTaskEvent(ISafeCheck iSafeCheck, TaskEvent taskEvent) {
Log.d(TAG, "${taskEvent?.tag} isCheckPass is ${taskEvent?.isCheckPass}");
}
@Override
public void onComplete() {
Log.d(TAG, "安全检查完成");
Toast.makeText(MainActivity.this, "安全检查完成", Toast.LENGTH_SHORT).show();
}
});
二,功能定制,基于上面的快速集成,最快只需两步:
检测不通过的话,默认会弹出一个检测不通过的警告弹窗,如果需要自定义处理检测不通过的操作,有两种办法:
1. 防调试检测
在应用启动时会启动一个定时任务,每1秒检查一次,持续检查5分钟;定时任务启动成功即认为该任务通过。
判定为被调试的几种触发条件:
触发以上任何一种条件应用进程都会被强制杀掉
2. 网络代理检测
在应用启动时会检查一次当前网络是否被代理,如果被网络代理则检查失败,会弹窗阻塞后续任务执行。
开发者也可以在每次应用访问网络前都调用一次 Utils.isWifiProxy 方法执行一次检查。
3. Root检测
在应用启动时会检查一次当前设备是否被Root过,如果被Root,会弹窗阻塞后续任务执行。
4. 模拟器检测
在应用启动时会检查一次当前设备是否在模拟器上运行,如果是,会弹窗阻塞后续任务执行。
5. 正版签名检测
在应用启动时会检查一次当前应用的签名是否正版签名一致,如果不一致,会弹窗阻塞后续任务执行。
需要传入正版签名的sha1,可以使用命令:keytool -v -list -keystore
<签名文件路径> 来获取
6. 界面劫持检测
在应用启动时会注册一个应用前后台状态的监听,如果应用最上层的页面没有在前台显示,会弹窗一个退到后台的提示;监听注册成功成功即认为该任务通过。