Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ElivenLZY/AndroidSafeCheck

APP过等保要用到的安全检测,支持调试检测/签名校验/Root检测/网络代理检测等,功能高度灵活可定制。
https://github.com/ElivenLZY/AndroidSafeCheck

Last synced: 21 days ago
JSON representation

APP过等保要用到的安全检测,支持调试检测/签名校验/Root检测/网络代理检测等,功能高度灵活可定制。

Awesome Lists containing this project

README

        

## Android SafeCheck

[![](https://jitpack.io/v/elivenlzy/androidsafecheck.svg)](https://jitpack.io/#elivenlzy/androidsafecheck)

这是一个Android的安全环境检测库,项目中接入该库可以提升APP的安全等级,可用于过等保时的安全扫描。

> 功能列表:

1. 防调试检测
2. 网络代理检测
3. Root检测
4. 模拟器检测
5. 正版签名检测
6. 界面劫持检测

### 依赖
****

**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. 新建一个task类,继承 AbstractCheckTask ,重写check方法,实现检测逻辑。
2. 将此task类添加到TaskQueue队列中即可

**检测不通过的话,默认会弹出一个检测不通过的警告弹窗,如果需要自定义处理检测不通过的操作,有两种办法:**

1. 重写 AbstractCheckTask 中的 interruptCheck 方法
2. 在启动检查时传入的 OnTaskListener 的 OnTaskEvent 方法中,根据
taskEvent.result 和 taskEvent.tag
来判断处理不通过的task,然后根据处理结果来是否调用 iSafeCheck.check
方法继续执行后面的检查task

### 功能介绍
---------

**1. 防调试检测**

在应用启动时会启动一个定时任务,每1秒检查一次,持续检查5分钟;定时任务启动成功即认为该任务通过。

判定为被调试的几种触发条件:
* 非调试模式下debug标识为true
* 非调试模式下被外部调试器连接
* 本地的23946默认调试端口被占用
* 本地存在TracerPid的调试文件

触发以上任何一种条件应用进程都会被强制杀掉

**2. 网络代理检测**

在应用启动时会检查一次当前网络是否被代理,如果被网络代理则检查失败,会弹窗阻塞后续任务执行。

开发者也可以在每次应用访问网络前都调用一次 Utils.isWifiProxy 方法执行一次检查。

**3. Root检测**

在应用启动时会检查一次当前设备是否被Root过,如果被Root,会弹窗阻塞后续任务执行。

**4. 模拟器检测**

在应用启动时会检查一次当前设备是否在模拟器上运行,如果是,会弹窗阻塞后续任务执行。

**5. 正版签名检测**

在应用启动时会检查一次当前应用的签名是否正版签名一致,如果不一致,会弹窗阻塞后续任务执行。

需要传入正版签名的sha1,可以使用命令:keytool -v -list -keystore
<签名文件路径> 来获取

**6. 界面劫持检测**

在应用启动时会注册一个应用前后台状态的监听,如果应用最上层的页面没有在前台显示,会弹窗一个退到后台的提示;监听注册成功成功即认为该任务通过。