【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎

简介: 【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎

文章目录

一、VAHunt 引入

二、VAHunt 原理

三、识别插件化引擎





一、VAHunt 引入


从应用开发者角度出发 , 保护自己开发的应用不被恶意开发者使用插件化虚拟引擎二次打包 , 并植入恶意代码插件 , 避免自己的应用运行在插件化引擎中 , 是很有必要的 ;


从应用市场角度出发 , 识别出基于插件化引擎的恶意软件 , 并避免恶意软件上架 , 是一项很重要的工作 ;


VAHunt 是用于对 APK 文件进行静态分析 , 可以识别出 使用了插件化引擎的 恶意应用 ;


GitHub : https://github.com/whucs303/VAHunt






二、VAHunt 原理


VAHunt 原理 :


使用 aapt 工具从 APK 文件中提取 AndroidManifest.xml 清单文件 , 从 AndroidManifest.xml 中可以提取应用中的组件信息 , 之后需要根据这些组件 , 查询是否有插件化引擎的特点 ;


使用 dexdump 工具反编译 Dex 字节码文件 , 获取 Smali 代码 , 如果有多个 Dex 文件 , 合并这些 Dex 文件 , 并使用 FlowDroid 为每个 APK 文件建立控制流图 ;


首先识别出该应用是否是插件化应用 , 然后识别该应用时良性应用 , 还是恶意应用 ;






三、识别插件化引擎


识别插件化引擎 :


插件化引擎特点参考 【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 ) 一、插件引擎运行特点 ;


之前已经记录了 AndroidManifest.xml 清单文件中的组件信息 , 如果该应用是插件化应用 , 那么假设这些组件都是占坑用的 “桩” 组件 , 用于欺骗 AMS 用的 ;


获取 Intent 操作 : 假设当前应用是插件化应用 , 那么启动插件化组件 , 需要先创建 Intent , 然后设置插件化信息到 extra 中 , 插件化一般是将 插件 Intent 放在该 Intent 的 数据中 , 提取该 Intent 操作的所有 API , 观察是否有设置插件组件信息 ;


Intent 状态转换 : 如果在一个 Intent 中 , 包含了另外一个 插件 Intent 或者插件信息 , 那么该 Intent 极有可能是一个插件 Intent ;


宿主应用 中 , 在主线程 启动 Activity , Intent 的目标对象是 “桩” 组件 , 将其传入 AMS , 欺骗 AMS , 然后从 AMS 切换到主线程后 , 将 Intent 中隐藏的插件 Intent 取出 , 创建该插件组件 , 并启动该组件 ;


目录
相关文章
|
4天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
18 0
|
4天前
|
网络协议 Shell Android开发
Android 深入学习ADB调试原理(1)
Android 深入学习ADB调试原理(1)
20 1
|
4天前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
26 0
|
2月前
|
Java 开发工具 Android开发
[Android AIDL] --- AIDL原理简析
[Android AIDL] --- AIDL原理简析
33 0
|
4月前
|
存储 Java 开发工具
[Android]序列化原理Parcelable
[Android]序列化原理Parcelable
51 0
|
4月前
|
存储 Java Android开发
[Android]序列化原理Serializable
[Android]序列化原理Serializable
46 0
|
4月前
|
XML Java Android开发
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)
47 0
|
7月前
|
存储 监控 算法
Android 启动优化(二)-有向无环图的原理以及实现方式
Android 启动优化(二)-有向无环图的原理以及实现方式
|
7月前
|
算法 程序员 调度
Android 启动优化(一) - 有向无环图是原理
Android 启动优化(一) - 有向无环图是原理
|
8月前
|
Android开发
Android手写占位式插件化框架之apk解析原理系统源码分析
Android手写占位式插件化框架之apk解析原理系统源码分析
80 0