游戏APP实现应用分身

1、背景

近些年手机上各种分身类软件被追为热点,就是一部手机上安装多个相同应用,实现多个帐号同时登录使用。比如说同时登陆两个QQ微信,游戏大小号双开等。

可以看到模拟器本身就自带多开应用的功能,那么我们又如何通过一些技术的手段来实行应用分身呢?(虽然大多数手机都支持应用多开的功能)

2、使用到的工具

  • 网易MuMu模拟器
  • AndroidCrackTool
  • Android Studio

3、逆向分析

这里我们选择极品芝麻官这款游戏来进行测试,我们先使用AndroidCrackTool修改签名后重新编译APK

重新生成的APK签名就发生了改变,而通常在开发一款应用程序,都会指定一个签名,后期的更新签名也是不变的。

而在 /data/app下可以看到,安装的应用程序都是以包名作为文件夹名来存储数据的,那么虽然我们签名的不同,但是包名是相同的,所以会安装失败。所以说在安卓操作系统中,包名不能冲突,要么是签名一致覆盖安装,要么就是更改包名

那么我们使用AndroidCrackTool来反编译APK编码

用Android Stutio打开,可以在AndroidManifest.xml这个配置文件中看到包的名称

这里把包的名称com.anzhuojpzmg.ckhd.aligames改成com.anzhuojpzmg.ckhd.sqyyaligames

重新回编译apk,可以看到在文件夹中重新生成一个apk

查看包名的信息,可以看到包名已经被修改成功

那么我们将刚刚回编译的apk进行安装(注意:AndroidKiller回编译apk时自动对apk进行签名,AndroidCrackTool回编译apk后还需手动签名apk)

那么在安装我们回编译的apk过程中,又会出现这样的报错信息INSTALL_ FAILED_ CONFLICTING_ PROVIDER

就是说我们更改包名后的apk和之前安装apk的提供者是相同的,安装过程中提供者发生冲突。那么只要我们根据提示的错误信息继续更改配置文件中提供者的名称就可以了

我们找到有关内容提供者的信息,修改其中的内容

重新编译apk后安装进行安装,虽然可以进行安装,但是会出现错误。

配置文件中提供者的信息配置错误,提示我们更改其对应的属性,那么我们根据错误信息继续更改提供者中的内容

这次我们重新回编译进行安装,可以看到安装成功,两个apk可同时进行

4、总结

其实这个逆向过程是非常简单的,修改包名和签名信息,再根据错误提示进行修改就可以了,但主要是学习其中的一个逆向思维,根据apk运行错误展示的一些错误信息,找到错误的所在位置,进行修改,从而实现自己想要的功能