文章目录

  • 前言
  • 一、应用开发者规避 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 会声明尽可能多的权限 125125125 个 , 一般插件化引擎宿主应用的权限范围会大于插件应用的权限 ; 使用 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 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )相关推荐

  1. 【Android 插件化】VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )

    文章目录 一.目前的 API 现状 二.安装应用源码分析 1.安装按钮执行的操作 2.返回到 HomeActivity 执行的操作 一.目前的 API 现状 下图是 VirtualApp 官方给出的集 ...

  2. 工业App能否成为继Android和iOS后下一个App开发者的春天?

    为什么需要工业互联网平台? 只要会Java或者C或者HTML5就可以开发手机上的App,但是工业App跟手机App不一样,需要跟设备打交道,需要听懂设备.读懂设备. 传统工业应用软件往往开发难度大.开 ...

  3. 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  4. Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法

    Chrome 浏览器插件问题处理 第一章:问题描述 ① 问题一:请停用以开发者模式运行的插件 ② 问题二:该拓展程序未列在 chrome 网上应用商店中,并可能是在您不知情的情况下添加的 第二章:Ch ...

  5. 在Android手机或平板电脑上启用开发者模式选项

    这是两个步骤的过程,第一步是在Android手机或平板启用开发模式选项和第二是交换机上的USB调试的设备.让我们看看如何在下面的教程中完成这两个活动. 第1步:启用开发人员选项 1)点击主菜单图标. ...

  6. Discuz 开启开发者模式并且开始默认安装未上架插件调试的模式-并且关掉应用中心-一颗优雅草科技伊凡

    Discuz 开启开发者模式并且开始默认安装未上架插件调试的模式-一颗优雅草科技伊凡 由于很多开发者需要尝试开发插件和模板,开发之前需要将论坛调整为开发者模式,正式运营论坛慎重,"修改会让你 ...

  7. android 微信辅助开发,Android 微信支持直接从 chrome 的开发者工具调试啦!

    前言 之前在广州的 Appium girl QQ 群有同学分享了微信的开发者工具,今天终于抽空试了下,惊喜地发现现在 Android 版微信已经可以通过一些设置做到支持从 chrome 的开发者工具直 ...

  8. 2018 Google I/O 开发者大会发布的那些新技术

    本文为转载文章,原文地址: https://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652046210&idx=1&sn= ...

  9. Android APK文件结构 完整打包编译的流程 APK安装过程 详解

    Android apk文件结构 打包编译的流程 Android官网 配置构建 流程 Configure your build The build process APK文件结构 assets res ...

最新文章

  1. 华为机考HJ17坐标移动
  2. 精益 React 学习指南 (Lean React)- 3.4 掌控 redux 异步
  3. 关于方法论的对话之二敏捷与方法论
  4. Android之调用微信登陆、分享、支付
  5. (原)用pixi.js 实现 方块阵点击后原地自转效果
  6. HTML animate()动画更改多个元素背景颜色但不同时生效问题
  7. python 提取列表元素_Python如何获取列表中元素的索引,python,获得,某个,index
  8. Error: EBUSY: resource busy or locked, lstat ‘D:\DumpStack.log.---基于Vue的uniapp手机端_前端UI_uview工作笔记004
  9. 微信html5视频播放器,解决微信h5页面视频播放问题实例
  10. python 同步记事本_如何使用Python同步文件夹
  11. 【5G系列】一文打尽 IMSI、TMSI、GUTI、P-TMSI、S-TMSI、LMSI、5G-TMSI、5G-GUTI、5G-S-TMSI
  12. 无扩展,不 Chrome
  13. html表格第一列和最后一列冻结
  14. 小学一年级上学期必背古诗文2021-2022学年
  15. mysql 修改 root 密码
  16. Kotlin学习日志(三)控制语句
  17. 如何正确接触天使投资人?
  18. 很动人的伤感爱情故事_等待着,寻找着久别的恋人
  19. 高中信息技术会考学业水平考试合格考刷题平台知识点平台易会考
  20. Mac Ventura 13.0 设置在访达中直接打开终端

热门文章

  1. Spring IOC 注入方式
  2. .net导出Excel
  3. MySQL里的wait_timeout
  4. Iphone 指触行为会
  5. 转:Linux查看CPU信息、机器型号等硬件信
  6. jenkins内置变量的使用
  7. Dinic最大流 || Luogu P3376 【模板】网络最大流
  8. 前段第44天------前端、前端三剑客、HTML
  9. editplus替换空白行的正则表达式
  10. Selenium常用API的使用java语言之7-控制浏览器操作