在过去的很长一段时间,我们通过用户反馈、服务器、公关部门等多种渠道,发现了多款外挂助手软件,严重侵犯了商业化与互联网安全。我们从一开始就强调行业安全,禁止非法用途,从今天开始github不再维护,有需要使用多开软件的朋友,请在 GooglePlay商店下载使用。商业合作请联系唯一合法微信:WaxMoon2018
这是一款自带谷歌服务框架的免安装神器,为您提供独立的运行环境,畅玩Google Play游戏与应用。
1:PlayBox适用于各大品牌手机系统,小米,三星,华为,OPPO,VIVO等,支持Android 7-14;
2:内置Google Play套件,无限畅玩国内外优质游戏与应用;
3:独立虚拟环境,不受系统限制,简单稳定高效.
这是一款简洁易用并且免费的安卓多开助手,可以在一台手机上使用多个相同的应用程序并运行多个账户,包括: whatsapp、facebook、instagram、微信等
请先加微信:WaxMoon2018
该仓库大概一个月更新一次,请留意文末的更新日志
MultiApp是一款虚拟安卓容器,可实现app多开,该工程提供了一个简易的UI供您体验,您也可以下载官网安装包享受更流畅的体验。如果您是一个android开发者,也可以自已定制UI,您不用关注底层的实现细节,使用opensdk提供的api即可实现app多开。如果您在体验过程中有任何问题,可直接咨询微信账号。
另外,团队会持续修复问题以及更新opensdk,为您提供最佳的体验。
你可能需要到这个项目仓库,下载并学习基本的代码
免安装google play <----> 多开facebook
github_gp.mp4
github_fb.mp4
我们也支持某些传统多开软件的运行
传统的多开方案依赖于java动态代理、inline hook、代理转发等手段保证虚拟进程的正常运行。如果三方app同样使用了java动态代理,此时会存在代理相互覆盖的问题,该情况会导致三方app运行时的逻辑发生变化。逻辑‘被’发生变化是极大多数厂家不愿意看到的,可能在一定程度上影响其收益。所以从某种意义上来讲,传统方案并不能定义为容器。
MultiApp技术选型之初就抛弃了动态代理,service、receiver、provider等binder组件也均由MultiApp engine自行维护。很遗憾的是Activity组件必须通过代理维护其生命周期,但是我们使用了更底层的机制确保不会影响app的运行时逻辑。另外,在native hook技术上,我们基于seccomp/bpf自研了更为有效的svc hook方案,并在某些场景下启用,综合来看更接近沙盒容器的概念。
1) 在Activity.onCreate函数中打印代码栈,并分别用传统多开软件、MultiApp、本机打开运行
public class MainActivity extends ButtonActivity {
final static String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Exception().printStackTrace();
}
}
第一张图片为传统多开软件的异常代码栈,第二张为MultiApp运行的代码栈,第三张为系统本机运行的代码栈。
MultiApp与本机的代码栈一致。
2) 判断ActivityManager的binder接口是否被动态代理,并分别在传统多开软件、MultiApp中运行
public class MainActivity extends ButtonActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Exception().printStackTrace();
{
try {
Class<?> class_ActivityManagerNative = Class.forName("android.app.ActivityManagerNative");
Method method_getDefault = class_ActivityManagerNative.getDeclaredMethod("getDefault");
IInterface remote_ActivityManager = (IInterface) method_getDefault.invoke(null);
boolean isProxy = remote_ActivityManager instanceof Proxy;
Log.d("WaxMoon", String.format("ActivityManager(%s) is proxy: %s", remote_ActivityManager, isProxy));
} catch (Exception ignore) {
}
}
}
}
传统多开日志
11-25 17:56:38.823 5153 5153 D WaxMoon : ActivityManager(android.app.IActivityManager$Stub$Proxy@8abaec7) is proxy: true
MultiApp日志
11-25 17:59:13.804 8197 8197 D WaxMoon : ActivityManager(android.app.IActivityManager$Stub$Proxy@79f3e55) is proxy: false
由于使用了submodule,您必须手动拉取子仓
git clone https://github.com/WaxMoon/MultiApp.git
git submodule update --init
HackApplication它会帮您完成engine的初始化
public class MoonApplication extends HackApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}
@Override
public void onCreate() {
super.onCreate();
}
}
您也可以参考opensdk代码,自己进行engine的初始化。
public class HackApplication extends Application {
private static final boolean DEBUG = Features.DEBUG;
private static final String TAG = HackApplication.class.getSimpleName();
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
if (DEBUG) Log.d(TAG, "attachBaseContext start");
HackRuntime.install(this, "version", true);
Cmd.INSTANCE().exec(CmdConstants.CMD_APPLICATION_ATTACHBASE, this, base);
if (DEBUG) Log.d(TAG, "attachBaseContext end");
}
@Override
public void onCreate() {
super.onCreate();
if (DEBUG) Log.d(TAG, "onCreate start");
Cmd.INSTANCE().exec(CmdConstants.CMD_APPLICATION_ONCREATE);
if (DEBUG) Log.d(TAG, "onCreate end");
}
}
var install: (ApkInfo)->Unit = { apkInfo ->
val ret = HackApi.installPackageFromHost(apkInfo.pkgName, userSpace, false)
when (ret) {
INSTALL_SUCCEEDED ->
Toast.makeText(MoonApplication.INSTANCE(), R.string.toast_success,
Toast.LENGTH_SHORT).show()
INSTALL_FAILED_ALREADY_EXISTS ->
Toast.makeText(MoonApplication.INSTANCE(), R.string.toast_already_installed,
Toast.LENGTH_SHORT).show()
else ->
Toast.makeText(MoonApplication.INSTANCE(), R.string.toast_fail, Toast.LENGTH_SHORT).show()
}
}
/**
* install the apk/apks that is not installed on the system.
* @param apkPathOrDir if this app is a full apk file, apkPathOrDir should pass an absolute path,
* such as /sdcard/com.xx.yy/com.xx.yy.apk;
*
* if this app is split apk files, apkPathOrDir should pass the directory
* containing all the apk files for this app, such as /sdcard/com.xx.yy/,
* and this directory can't contain apk files that do not belong to the current app.
*
* @param userId
* @param forceInstall
* @return public static final int INSTALL_SUCCEEDED = 1;
*/
public static int installApkFiles(String apkPathOrDir, int userId, boolean forceInstall) {
...
}
var startApp: (ApkInfo)->Unit = { apkInfo ->
var intent:Intent? = null
if (apkInfo.sysInstalled) {
intent = MoonApplication.INSTANCE().packageManager.getLaunchIntentForPackage(apkInfo.pkgName)
intent?.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
} else {
Toast.makeText(MoonApplication.INSTANCE(), R.string.toast_unsupport, Toast.LENGTH_SHORT).show()
}
if (intent != null) {
Log.d(TAG, "begin start " + apkInfo.pkgName)
val startRet = HackApi.startActivity(intent, userSpace)
if (startRet != START_SUCCESS) {
Toast.makeText(MoonApplication.INSTANCE(), R.string.toast_fail, Toast.LENGTH_SHORT).show()
}
}
}
private void monitorApplicationEvent() {
final String TAG = "EVENT";
HackApi.registerApplicationCallback(new HackApi.ApplicationCallback() {
@Override
public void onInitAppContext(Object loadedApk, Context appContext) {
Slog.d(TAG, "onInitAppContext %s %s", loadedApk, appContext);
}
@Override
public void onAttachBaseContext(Application app) {
Slog.d(TAG, "onAttachBaseContext %s", app);
}
@Override
public void onInstallProviders(Application app) {
Slog.d(TAG, "onInstallProviders %s", app);
}
@Override
public void onCreate(Application app) {
Slog.d(TAG, "onCreate %s", app);
}
});
}
- 支持android6-android13
- 支持armv7-32, armv8-64
- 主包/辅包
- 支持google play
- app多开
- 支持app免安装(私密安装)
- 功能定制
- 授权
- 其他...
该仓库包括opensdk均使用AGPL-3.0协议,您必须遵守该协议。您在对外发布软件之前,请务必联系微信告知您的想法,在某些情况下您可以自由免费使用。
出于代码安全以及行业安全的角度,我们暂时禁用了软件调试功能。如果您有相关的合法需求,可以通过下述方式咨询合作。
如果您在使用软件的过程中看到了广告,这是正常现象,这是我们不断维护github的动力,希望大家体谅
微信账号:WaxMoon2018
新浪邮箱:[email protected]
1.支持android6.0-14.0
2.同步修复线上崩溃问题
1.支持android6.0-8.1
2.修复32位应用无法启动
3.修复一些crash
4.优化程序无响应
1.修复twitter白屏
2.修复messenger免安装偶现崩溃
3.修复后台GP的binder崩溃
4.修复chrominum免安装崩溃
5.修复知乎有时候不能查看文章
6.优化进程启动速度
1.修复部分软件谷歌登录失败
2.修复权限检测异常
3.修复pococha不能通过facebook登录
4.修复广播receiver问题
5.修复youtube崩溃
6.修复app获取签名为空
7.支持设备伪装,比如android_id
8.添加接口-杀死运行中的多开应用HackApi.killApplication
9.修复一加机型crash
10.修复三星机型崩溃
11.优化谷歌套件的访问逻辑
12.修复mobile legends游戏登录问题
13.修复tiktok发布视频崩溃
14.修复32位机型套件安装以及crash
15.优化app的启动速度
16.修复startActivity问题
17.添加CMD_QUICK_START_ACTIVITY
1.解决部分手机无响应
2.优化provider隔离
3.修复snapchat崩溃
4.解决应用崩溃无限重启
5.解决Google play crash
6.解决firefox崩溃
7.解决finishActivity失败
8.解决部落冲突免安装模式崩溃
9.适配小米、联想机型
1.优化bpf/seccomp
2.修复文明觉醒crash
3.messager耗时优化
4.运行某多开软件crash
5.修复莉莉丝游戏崩溃
6.修复B站32位崩溃
7.修复app不能使用Google登录(仅支持debuggable="false")
8.支持更多360加固的app
9.支持某些爱加密加固应用
10.修复Google概率性无法登录
11.修复友邻崩溃
12.修复snapchat发送消息失败
13.修复paltalk崩溃
14.支持Application lifecycle callback(HackApi.registerApplicationCallback)