Applist Detector 拆解:设备安全检测的 8 个检测器到底在查什么
【免费下载链接】ApplistDetectorA library to detect suspicious apps like Magisk项目地址: https://gitcode.com/gh_mirrors/ap/ApplistDetector
做支付、记账类 App 时,最怕用户的设备被 Magisk、Xposed 这类框架劫持,root 权限被藏得严严实实。Applist Detector 是一个 Android 开源库,专门做设备安全检测:它交叉比对包管理器接口、文件系统和应用组件结构,把藏在设备里的可疑应用逐个揪出来。
🔍 它到底怎么检测的
交叉问四个窗口,确认包名在不在
针对每个可疑包名,它先用四种渠道去列应用:shell 执行pm list packages、getInstalledPackages、queryIntentActivities,再逐个查getPackageUid、getLaunchIntentForPackage。就像同时问四个窗口"这个 App 装没装",只要有一个渠道只回一条记录,多半是被 hook 篡改过的假列表。
翻数据目录,原生 syscall 再查一遍
就算 PackageManager 接口被伪造,应用在磁盘上留下的数据目录删不干净。它会探测/data/data/包名及Android/data、Android/media、Android/obb三个目录,并且同一套探测跑两遍:一遍走 libc,一遍用linux_syscall_support直接发系统调用,绕开被 hook 的封装。
不看名字看骨架,认出 Magisk 本体
有些框架会改名躲包名,于是它改用结构比对:扫带xposedminversion元数据的 Activity 判定 Xposed 模块;对 Magisk,则拿候选 App 的组件数(Activity/Service/Receiver/Provider)和权限集合去对齐内置的stub.apk模板,再卡住 APK 体积窗口。不靠名字,靠骨架和权限指纹认人。
🚀 五分钟跑起来
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/ap/ApplistDetector - 用 Android Studio 打开项目,等 Gradle 同步完依赖。
- 运行 app 模块,主界面会按检测器逐项列出结果;检测逻辑集中在
library/src/main/java/icu/nullptr/applistdetector/。 - 集成到自己项目:把 library 作为依赖引入,直接调用现成检测器,或继承
IDetector自写一个。
谁会用得上
- 做支付、金融、反作弊的 App 开发者:上架前和运行中都要确认设备没被 root/hook,这个库把"查没查得到"封装成现成检测器,省得从零写。
- 安全研究人员:它把"PM 接口、shell pm 命令、文件系统"几条取证渠道并列返回,方便对照研究 hook 框架到底拦了哪一层。
- 想学 Android 反检测的初学者:Kotlin 写的、量不大,
IDetector基类统一了Result四级结果,照着改一条规则就能上手。
📦 源码里值得翻的两个地方
IDetector.kt:整个库靠这一个抽象基类加四值Result枚举串起来,想加新检测,照抄任一检测器文件、实现run()就行。MagiskApp.kt:不靠包名,而是把候选 App 的组件数和权限集合与内置stub.apk逐项比对,这个"结构比对"思路值得抄。
想深入可以把 library 模块的IDetector和MagiskApp读一遍,改一条检测规则通常只动一个文件;跑 demo 遇到问题也可以直接在仓库提 issue。
【免费下载链接】ApplistDetectorA library to detect suspicious apps like Magisk项目地址: https://gitcode.com/gh_mirrors/ap/ApplistDetector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考