【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )

简介: 【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )

文章目录

前言

一、应用开发者规避 APK 安装包被作为插件

二、检测插件化环境

1、检查 AndroidManifest.xml 清单文件

2、检查 运行时 信息

3、检查生成的目录

4、检查组件

前言

在上一篇博客 【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 ) 中 , 介绍了插件化的弊端 , DroidPlugin 和 VirtualApp 被用于制作恶意软件 , 黑客利用这两个插件化框架将 APK 文件封装到虚拟机引擎中 , 冒充被封装的 APK ;






一、应用开发者规避 APK 安装包被作为插件


如果被封装的 APK 应用涉及到用户注册 , 登录 , 付费等信息 ;


用户在使用黑客制作的 在插件化引擎 作为宿主软件 , 封装 APK 应用 , 并插入恶意代码 , 导致用户信息泄露 , 严重的还会导致用户金钱损失 ;


作为 APK 开发者的我们 , 必须采取一定的措施 , 避免我们开发的应用被恶意开发者使用 ;


在 ANTI-PLUGIN: DON’T LET YOUR APP PLAY AS AN ANDROID PLUGIN 论文中 , 使用了 PluginKiller , 用于避免自己的应用运行在虚拟化引擎上 , 就是避免自己开发的应用被当做插件 APK 使用 ;






二、检测插件化环境


PluginKiller 这个库在 GitHub 上没有找到 , 这里简单介绍下 PluginKiller 运行机制 , 自己也可以开发这个依赖库 ;



1、检查 AndroidManifest.xml 清单文件


检查 权限 详情 , 插件化引擎 如 DroidPlugin 会声明尽可能多的权限 125 125125 个 , 一般插件化引擎宿主应用的权限范围会大于插件应用的权限 ; 使用 PackageManager 获取应用权限 , 然后访问这些权限 , 如果访问插件应用没有的权限可以访问 , 说明当前运行在插件化引擎中 ;


检查 包名 是否注册到系统中 , 应用安装后 , 会自动在 /data/data 创建对应包名的目录 , 如果没有 , 说明当前运行在插件化引擎中 ;


检查 组件 名称 , 宿主应用中 , 如果要启动 Activity , 涉及到 AMS 调用 , AMS 接收的 Activity 必须是在清单文件中注册过得组件 ; AMS 切换到主线程 ActivityThread 后会使用 hook 技术将 在清单文件中注册过得 " 桩 " Activity 替换为 插件 Activity ; 调用 ActivityManager.getRunningServices 获取的组件是 " 桩 " 组件 , 不是插件中的组件 , 二者有区别的 ;



2、检查 运行时 信息


应用运行时会有一个 PID 和 UID ;


PID 是 Process ID , 进程 ID ;

UID 是 User ID , 用户 ID , 应用安装时自动分配的 , 如果应用不卸载 , 会一直保持该 UID ;

插件化引擎中运行的 APK 插件 , 其 UID 都是宿主应用的 UID ;


插件化引擎创建一个进程 , 运行 APK 插件 , 此时就会有两个进程 , 宿主进程 和 插件进程 , 两个进程 PID 不同 , 但是 UID 相同 ; 如果出现该特征 , 就可以确定该应用运行在插件化引擎中 ;



3、检查生成的目录


检查生成的文件 : 应用安装后 , 会在 /data/data/ 目录下生成对应包名的目录 , 检查该目录是否存在 ;



4、检查组件


在 AndroidManifest.xml 定义一个静态广播 , 静态广播是在应用安装时进行注册的 , 插件应用没有安装 , 因此想静态广播发送数据 , 肯定无法接收到 ;


运行时修改组件的 enable 属性 , DroidPlugin 无法在运行时实例化 enable = false 的组件 , 在组件注册时设置 false , 然后运行时修改成 true ;




参考博客 : 反插件化:你的应用不是一个插件

参考文献 : ANTI-PLUGIN: DON’T LET YOUR APP PLAY AS AN ANDROID PLUGIN


目录
相关文章
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
770 64
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1754 83
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
1075 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
645 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
543 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1677 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1101 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1188 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
917 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
9月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
418 0

热门文章

最新文章

  • 1
    为什么微信发送的APP安装不了,.apk转化为.apk.1
    1871
  • 2
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
    1075
  • 3
    Android历史版本与APK文件结构
    1754
  • 4
    Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
    370
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    645
  • 6
    【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
    1651
  • 7
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    667
  • 8
    apk安装包EXE,mis程序打包后报毒的正确处理方式-千万不要再人傻钱多被骗-真正的合法途径的处理方式才是正确的-apk安装包EXE,mis程序如何处理-优雅草央千澈
    602
  • 9
    使用Kivy创建“Hello World”应用并打包成APK
    2701
  • 10
    使用keytool查看Android APK签名
    2855