首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )

    文章目录 一、VirtualApp 简介 二、配置 VirtualApp 编译环境 1、Android Studio 3.0 2、NDK 版本 ( Android NDK r10e ) 3、配置远程仓库 三、编译运行 VirtualApp 官方示例 四、编译好的 VirtualApp 官方源码 总结 ( 编译配置如下 ) 一、VirtualApp 简介 ---- VirtualApp GitHub 地址 : https://github.com/asLody/VirtualApp 二、配置 VirtualApp 编译环境 ---- 1、Android Studio 3.0 编译 VirtualApp For Android Studio this means version 3.0+ ; ( 版本太低了 ) 最终使用 Android Studio 3.0 , 完成了 VirtualApp 的编译 ; 官方示例 ---- 上述配置完成后 , 即可成功编译 VirtualApp 官方示例 ; 运行效果 : 选择一款应用 , 安装该应用 ; 安装完毕后的应用 ; 运行插件应用后的效果 ; 四、

    5K21编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualApp 接入 ( 在 VirtualApp 工程下创建 Module | 添加依赖 | 启动 VirtualApp 插件引擎 )

    一、在 VirtualApp 工程下创建 Module 在 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 ) 博客的前提下 , 创建 Module ; 开发环境配置参考上面博客的环境 , Android Studio 3.0 , Android NDK r10e , Gradle characters. ) ; 选择创建 Activity ; 配置 Activity ; 这是 Android Studio 首次创建 Module , 需要安装一些组件 ; 二、添加依赖 直接使用 VirtualApp 方法中 , 执行如下代码 , 启动 VirtualApp 插件引擎 ; try { VirtualCore.get().startup(base); gApp = this; super.onCreate(); } } 四、博客源码 GitHub : https://github.com/han1202012/VirtualApp

    1.2K10编辑于 2023-03-29
  • 来自专栏FreeBuf

    VirtualApp技术黑产利用研究报告

    一、 前言 VirtualApp(以下称VA)是一个App虚拟化引擎(简称VA)。 VirtualApp创建了一个虚拟空间,你可以在虚拟空间内任意的安装、启动和卸载APK,这一切都与外部隔离,如同一个沙盒。 二、 VirtualApp原理 Android应用启动Activity时,无论通过何种API调用,最终会调用到ActivityManager.startActivity()方法。 四、 总结 VirtualApp作为开源的多开应用框架,可以被任何人使用。它在Android系统和被多开应用间增加了中间层。

    4.7K90发布于 2018-02-26
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )

    Y:\002_WorkSpace\001_AS\VA_Original\VirtualApp-master\VirtualApp>git status On branch master nothing to commit, working tree clean Y:\002_WorkSpace\001_AS\VA_Original\VirtualApp-master\VirtualApp>git push \VirtualApp>git push --set-upstream origin master The authenticity of host 'github.com (52.74.223.119 To github.com:han1202012/VirtualApp.git * [new branch] master -> master Branch 'master' set up Y:\002_WorkSpace\001_AS\VA_Original\VirtualApp-master\VirtualApp> GitHub 显示代码提交完成 ; UI 可视化提交失败 , 可以考虑使用命令提交代码

    71210编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | 仅做参考 | 没有解决实际问题 )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 编译 VirtualApp 报如下错误 : Could not determine java version from '11.0.8'. took 3 s 347 ms (75.89 MB) Executing tasks: [wrapper] in project Y:\002_WorkSpace\001_AS\VA_Original\VirtualApp-master \VirtualApp Starting Gradle Daemon...

    1.1K10编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 编译 VirtualApp ( https://github.com/asLody/VirtualApp ) 时 , 弹出如下错误 ; Error Gradle 'VirtualApp' project refresh failed 二、解决方案 ---- 在 Terminal 面板中 , 使用 gradlew assembleDebug --stacktrace

    2.4K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 创建报错 ( The length of the module location exceeds the limit of 100 characters. )

    二、解决方案 ---- 当前的 VirtualApp 的工程路径为 D:\002_Project\002_Android_Learn\VirtualApp\001_VirtualApp_Original \virtualapp-master\VirtualApp 上述路径有 95 个字符 , 超过 100 个字符就无法创建新的 Module 工程 ; 目录太深了 , 将源码的目录提出来 ;

    39110编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualApp 源码分析 ( 安装应用源码分析 | HomePresenterImpl 添加应用 | AppRepository.addVirtualApp )

    AppRepository.addVirtualApp 安装 SD 卡 APK 应用 一、安装应用源码分析 ---- 1、HomePresenterImpl 添加应用 mPresenter.addApp(info); 实际上调用的是 io.virtualapp.home.HomePresenterImpl

    49710编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

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

    文章目录 一、目前的 API 现状 二、安装应用源码分析 1、安装按钮执行的操作 2、返回到 HomeActivity 执行的操作 一、目前的 API 现状 ---- 下图是 VirtualApp 官方给出的集成 VirtualApp 的步骤 , 这个 API 目前跑不通 , 应该是最新的商业版的使用 API ; 当前的开放源码是 2017 年底的源码 , 好在源码 , 可以从源码中查找 API ; 二、 安装应用源码分析 ---- 1、安装按钮执行的操作 在安装应用界面中的 手机内存 界面中 , 选中要安装的应用 , 点击 " 安装 " 按钮 , 即可安装该应用到 VirtualApp 插件化引擎中 ; 到字符串资源中 , 找 " 安装 " 字符串 ; 查找到在 io.virtualapp.home.ListAppFragment 页面中 , mInstallButton 就是要安装应用的按钮 , HomeActivity 执行的操作 使用的 MVP 模式 ; 返回的时候 , 获取到 AppInfoLite 集合 , 逐个遍历安装应用 ; mPresenter.addApp(info); 实际上调用的是 io.virtualapp.home.HomePresenterImpl

    1.7K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 编译报错 ( This Gradle plugin requires a newer IDE able to request IDE model leve )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 在 Android Studio 中编译 VirtualApp , 报如下错误 : Gradle 'VirtualApp' project

    60710编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )

    VirtualAppEx 简介 ---- VirtualAppEx GitHub 地址 : https://github.com/xxxyanchenxxx/VirtualAppEx xxxyanchenxxx 在 VirtualApp 2017年年底停止维护的开源代码的基础上 , 适配了 Android 9.0 操作系统 ; 目前的 VirtualApp 的商业版本适配到了 Android 12 , 但是需要购买商业授权 , 才能获得最新代码 ; 二、配置 VirtualAppEx 编译环境 ---- 1、Android Studio 3.0 编译 VirtualApp , 需要使用 Android Studio 3.0 版本的 IDE , For Android Studio this means version 3.0+ ; ( 版本太低了 ) 最终使用 Android Studio 3.0 , 完成了 VirtualApp 的编译 ; android-ndk-r10e-windows-x86_64\\android-ndk-r10e sdk.dir=D\:\\001_Develop\\001_SDK\\Sdk 参考博客 【错误记录】Android Studio 编译报错 ( VirtualApp

    1.7K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )

    添加应用源码分析 1、LaunchpadAdapter 适配器 2、适配器添加元素 3、PackageAppData 元素 一、添加应用源码分析 ---- 1、LaunchpadAdapter 适配器 在 io.virtualapp.home.HomeActivity findViewById(R.id.home_launcher); 设置的适配器如下 : private LaunchpadAdapter mLaunchpadAdapter; 2、适配器添加元素 在 io.virtualapp.home.adapters.LaunchpadAdapter }); } } 3、PackageAppData 元素 上述 LaunchpadAdapter 列表适配器的数据源 List<AppData> dataList , 中的元素类型是 io.virtualapp.home.modelsPackageAppData

    55800编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】插件化框架整理

    文章目录 一、Altas ( 阿里巴巴 ) 二、DynamicAPK ( 携程 ) 三、VirtualApp ( 罗迪 ) 四、DroidPlugin ( 360 ) 五、dynamic-load-apk www.infoq.cn/article/ctrip-android-dynamic-loading/ GitHub 地址 : https://github.com/CtripMobile/DynamicAPK 三、VirtualApp ( 罗迪 ) ---- https://github.com/asLody/VirtualApp https://github.com/xxxyanchenxxx/VirtualAppEx 四、DroidPlugin

    4.2K30编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )

    启动应用点击方法 2、HomePresenterImpl 启动应用方法 3、VirtualCore 启动插件应用最终方法 一、启动应用源码分析 ---- 1、HomeActivity 启动应用点击方法 在 io.virtualapp.home.HomeActivity 页面中 , 点击列表中的应用后 , 可以启动应用 ; 直接到 io.virtualapp.home.adapters.LaunchpadAdapter 适配器中查找点击事件源码 , 调用的是 private pos); mPresenter.launchApp(data); } }); } } 应用启动 , 实际上调用的是 io.virtualapp.home.HomePresenterImpl 8d312bf, fastOpen=false, isFirstOpen=false, isLoading=false} 3、VirtualCore 启动插件应用最终方法 最终启动应用的方法是 io.virtualapp.home.LoadingActivity

    98210编辑于 2023-03-29
  • 来自专栏企鹅号快讯

    无需 Root 也能使用 Xposed!

    可以参考 我为Dexposed续一秒——论ART上运行时 Method AOP实现(http://weishu.me/2017/11/23/dexposed-on-art/) 双开的典型实现是lody的 VirtualApp (https://github.com/asLody/VirtualApp),那么我们来一看 VirtualApp 与 epic 结合会产生什么样奇妙的化学反应。 我们的思路很清晰:用 VirtualApp 去启动别的App,在启动过程中通过 epic Hook本进程,从而控制被启动的App。 为此,我写了一个 双开环境下的Xposed兼容层:Exposed(https://github.com/android-hacker/exposed);同时,修改了 VirtualApp 的部分实现,使得它能够在进程的启动的时候加载 clone源码直接build,也可以使用我编译好的版本 Github下载(https://raw.githubusercontent.com/android-hacker/VAExposed/master/VirtualApp

    2.5K100发布于 2018-01-04
  • 2026 Android 插件化方案大盘点:谁才是你的“本命”?

    2026年Android插件化主流方案盘点与选型:原理、框架对比与落地建议插件化技术原理简述与参考来源Phantom框架解析与特性VirtualAPK框架解析与特性VirtualApp框架解析与特性Shiply 本文将依次解析Phantom、VirtualAPK、VirtualApp与Shiply四款框架的原理与优劣,并给出选型参考。 VirtualApp框架解析与特性VirtualApp是运行于Android的沙盒产品,可视为轻量级“Android虚拟机”,开源地址为https://github.com/asLody/VirtualApp VirtualApp的商业版在监管控制与扩展性上独具优势,适用于对安全隔离与系统级管控有强需求的场景。 综合来看,Phantom在兼容性与接入效率上优势明显,适合版本跨度大的场景;VirtualAPK提供可控的底层实现但需自行解决资源混淆与兼容问题;VirtualApp商业版在沙盒隔离与管控上独具价值,适合高安全需求

    20810编辑于 2026-05-13
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 编译 VirtualApp 报如下错误 : Could not determine java version from '11.0.8'. Gradle wrapper to 4.8.1 version and re-import the project 二、解决方案 ---- 运行的项目 https://github.com/asLody/VirtualApp

    1.6K20编辑于 2023-03-29
  • 来自专栏爱游博客

    无需Root也能使用XposedVAExposed双开神器

    (关于epic在ART上实现AOP Hook可以参考 我为Dexposed续一秒——论ART上运行时 Method AOP实现 双开的典型实现是lody的 VirtualApp,那么我们来一看 VirtualApp 我们的思路很清晰:用 VirtualApp 去启动别的App,在启动过程中通过 epic Hook本进程,从而控制被启动的App。 为此,我写了一个 双开环境下的Xposed兼容层:Exposed;同时,修改了 VirtualApp 的部分实现,使得它能够在进程的启动的时候加载 Exposed 这个兼容层,代码在这:VAExposed

    3.6K30发布于 2019-08-07
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )

    , 与正常使用插件化技术的应用进行区分 ; 检测恶意插件化应用 : https://github.com/whucs303/VAHunt 三、常用的插件化虚拟引擎 ---- 常用的插件化虚拟引擎 : VirtualApp : https://github.com/asLody/VirtualApp DroidPlugin : https://github.com/DroidPluginTeam/DroidPlugin

    1.2K40编辑于 2023-03-29
  • 来自专栏FreeBuf

    别让你的手机成为恶意软件的温床

    在这个样本中,病毒作者利用了一款开源的多开应用框架VirtualApp,运用此框架可以使得插件的作用效果大大增强,因为此框架使的插件实际是在Android系统与外部应用的中间层运行,插件的运行受系统本身的限制将会减少很多 ,近似于root的环境给病毒创造了绝妙的温床,而虚拟机的环境又使得静态的病毒检测方法无法生效,提高了查杀难度,结合 VirtualApp的病毒确实可以肆无忌惮做很多事。 VirtualAPP实现程序内部运行大致遵循以下流程,首先代理程序运行所需系统各种服务,使运行程序和VA为合为一体,其次修正应用数据,保存原有数据,然后数据整合在VA中代理运行,最终交于系统执行。 VirtualAPP实现多开应用的大致逻辑如图2-16所示: ? 图2-16VirtualAPP多开流程图 该病毒的文件结构以及运行逻辑如图2-17,图2-18所示: ? 图2-17应用文件结构 ?

    91300发布于 2018-07-30
领券