Ysj001 / PermissionMonitor

Android 隐私政策敏感权限监控工具。通过对敏感权限的调用代理来监控其调用,并支持检测通过反射调用敏感权限的行为。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android Permission Monitor

Android 隐私政策敏感权限监控。基于 BCUmodifier-aspect 实现。

通过在编译时代理敏感调用来监控敏感权限是否被调用,并支持检测通过反射调用敏感权限的行为。

  • 如果本项目对你有所帮助,欢迎 start。
  • 如果有遗漏的敏感权限欢迎提 issues 给我。

Compile

工程结构如下

  • app 用于演示的 demo
  • buildSrc 用于管理 maven 发布,和一些项目统一配置
  • lib_permission_monitor 本项目核心实现

Quick Start

  1. 用到的依赖版本

    • BCU:
    • modifier-aspect:
    • PermissionMonitor:
  2. 在项目的根 build.gradle.kts 中配置如下

    buildscript {
        repositories {
            maven { setUrl("https://jitpack.io") }
        }
        
        dependencies {
            // BCU 插件依赖
            classpath("com.github.Ysj001.BytecodeUtil:plugin:<lastest-version>")
            // modifier-aspect 依赖
            classpath("com.github.Ysj001.bcu-modifier-aspect:modifier-aspect:<lastest-version>")
        }
    }
    
    subprojects {
        repositories {
            maven { url 'https://jitpack.io' }
        }
    }
  3. app 模块的 build.gradle.kts 中的配置如下

    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
        // 添加 bcu 插件
        id("bcu-plugin")
    }
    
    // 配置 bcu 插件
    bcu {
        config { variant ->
            loggerLevel = 2
            modifiers = arrayOf(
            	// 使用 modifier-aspect 的 Modifier 实现
            	Class.forName("com.ysj.lib.bcu.modifier.aspect.AspectModifier"),
            )
        }
        filterNot { variant, entryName ->
            entryName.startsWith("kotlin")
                || entryName.startsWith("java")
                || entryName.startsWith("com/ysj/lib/bcu/modifier")
            // 请按需配置过滤,可大幅提升编译输速度
        }
    }
    
    dependencies {
        // 只需要在 debug 且运行时下依赖 PermissionMonitor
        debugRuntimeOnly("com.github.Ysj001:PermissionMonitor:<lastest-version>")
    }
  4. logcat 中过滤 tagPermissionMonitor,即可观察到是否有敏感权限被调用了。

    • 普通调用监控效果如下:

      普通调用

    • 反射调用监控效果如下:

      反射调用

About

Android 隐私政策敏感权限监控工具。通过对敏感权限的调用代理来监控其调用,并支持检测通过反射调用敏感权限的行为。

License:Apache License 2.0


Languages

Language:Kotlin 100.0%