android sdk多开,[原创]Android 应用多开对抗实践

本文介绍了Android应用多开的系统级和用户级技术方案,包括多用户功能、chroot、VirtualApp等,并提供了检测应用是否多开的代码示例。此外,还探讨了如何反制系统级和用户级应用多开,以及对用户级多开软件的分析和安全性考虑。最后,提到了前端白名单的重要性及其潜在风险。
摘要由CSDN通过智能技术生成

Android 应用多开对抗实践

白天午睡梦到些以前给某行业安全峰会写了材料,醒来后把记得的部分重新整理一下,分享出来给大家,尽量写得简洁明了。

未必准确,仅供参考,欢迎纠正补充

应用多开技术总结

系统级技术多开技术方案

发行版 APP

Android 多用户功能

OEM系统自带的"手机分身"、"应用双开",和 "Island/炼妖壶" 等各种 "Android for work" 产品

chroot

暂无发现 APP

多用户功能

多用户模式主要用到 UserManager 相关类,切换不同的用户,在不同的用户下运行 App,实现多开。最直观的例子是 Android 手机上的 多用户 功能, 手机分身 功能,以及 am switch-user 命令,这种简单粗暴的用法会将 Android 服务都运行一份,如果只用于应用多开,且不说资源消耗,切换用户是在麻烦。

在 Android 5.0 在基于多用户功能 添加了 Android for work 功能,可以在同一个桌面启动器下使用受限用户启动 APP,不再需要切换界面。同时将权限开发给了非系统应用。

chroot

UNIX 的 chroot 系统调用在 Android 上也能用,需要 root 权限。在本地挂载运行精简版系统镜像,使用远程桌面软件如 VNC 等访问本地多开的系统。尚未发现发行版 APP,可能在 ARM 服务器云手机中用到。

用户级技术多开技术方案

发行版 APP

VirtualApp

VirtualXposed, DualSpace

MultiDroid

LBE平行空间, Parallel Space

DroidPlugin

分身大师

Excelliance

双开助手, MultiAccount

其它

虚拟大师

在用户级的多开技术中,还可以在按设计用途划分出三类

“容器”:VirtualApp、MultiDroid

热更新/插件化:DroidPlugin、Excelliance

虚拟系统:虚拟大师

具体实现原理大家可以翻论坛里的 精品贴,这里不多描述。

值得一提的是,某云手机团队的 "虚拟大师" 产品,实现在用户态运行了一个精简版的 Android 系统镜像,在系统库中拦截了几乎所有系统调用,使用类似前文提到的 chroot 挂载系统镜像的方法运行,有兴趣的同学可以看一看。

拆招

反系统级应用多开仅多用户方案的多开,忽略 chroot /lxc

简单粗暴的代码// --- C++ ---

#include

bool isDualApp(){return 0 != getuid()/100000;}

// --- Java ---

import android.os.Process;

static boolean isDualApp(){return 0 != Process.myUid() / 100000;}

一行代码完事了?

完事了,真的完事了。

但是为什么?

Android 系统中,如果开启了多用户模式,会存在一个主用户和若干受限用户。

把 MIUI 的 "手机分身" 和 "应用双开" 功能都打开,可以看到有三用户,0、11 和 999,分别对应主用户、"手机分身" 和 &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值