安卓虚拟定位实现与反做弊思路

前言

写这篇博客主要是分享一下虚拟定位的反做弊思路算法

也是由于我的以前曾作过虚拟定位相关的小软件,也玩了一下VA的虚拟定位,挺有意思的,而后以为应该在解决反做弊的思路下写一篇分享。微信

一.安卓开发者模式模拟定位

1.1.实现方式框架

1)安卓6.0以上 打开开发者模式→模拟位置信息应用工具

2)安卓6.0之前 打开开发者模式→容许模拟位置学习

3)调用Android原生SDK提供方法插件

伪代码以下:对象

1.2.优缺点blog

  • 使用方便,调用原生SDK便可
  • 不易被检测(针对百度地图、高德地图及使用其APK的软件都可使用)
  • 对使用腾讯地图API(如微信、摩拜APP)的软件不起效果,可是美团里的骑车没用腾讯的就能生效。
  • P:原生代码中定位模拟有两种
  • GPS模拟
  • GPS模拟在打开GPS的状况下有必定几率会飘移
  • NETWORK模拟
  • NETWORK模拟在打开GPS或通网的状况下有必定几率会飘移

1.3.处理思路接口

1)加入腾讯地图API进行位置二次判断开发

2)打开时软件时强制要求GPS打开

(不少这类APP定位采用的NETWORK模拟会由于GPS打开产生致使来回飘移,能够记异常次数与阈值判断,或者定义飘移算法)

3)检测开发者模式/模拟定位是否打开(安卓6.0之前才能检测)

4)海拔高度比较,模拟的时候是须要注入海拔高度

二.root

2.1.实现方式

1)手机须要root

2)基于Xposed等hook框架开发

2.2.优缺点

  • root后基本没法判断是否有有针对软件的修改
  • hook框架能用来作不少东西如JustTrustMe(关闭证书强校验)、修改步数、抢红包之类的
  • 不少手机禁止root或者root困难(如华为、vivo等手机都已经禁止)
  • 道高一尺魔高一丈,有Magisk这类的框架免root获取root权限
  • 另外root权限太高,容易被第三方利用中毒或系统崩溃等

2.3.处理思路

  • 检测root,禁止root机使用
  • 检测Xposed等Hook框架模块
  • 检测Magisk这类免root获取root权限的框架

三. 运行在虚拟容器内

3.1.VirtualApp

1.实现方式

区分于root注入,root是直接修改了系统文件来添加代码注入窗口,VirtualApp经过将应用注册到虚拟空间中,在空间中创造的对象调用bindApplication()后添加代码注入窗口

相似Docker,VirtualApp是一套插件框架,容许应用以插件的方式运行在其构造的虚拟空间中,而无需实际安装应用

2.优缺点

  • 免root下实现root的功能
  • 使用上较root方便,有大量开源产品能够借鉴
  • 相对root的作法可检测(虚拟空间真实存在)

3.处理思路

VX做者的解答:

3.2.太极Xposed

基于Xposed等Hook框架二次开发,也是虚拟运行,与上面的VirtualApp不同的是

它须要卸载原APP,从新安装在太极容器内部(运行明显卡顿)

感受上就像一个是虚拟机(太极)一个是Docker(VirtualApp)

针对太极这类软件的检测要从检测应用列表(有防检测功能)/检测包目录是否存在下手

四.直接修改APP源码二次打包

4.1.优缺点

  • 可自由修改源码添加功能
  • 目前大部分软件都有反修改的功能,进一步破解很难
  • 代码混淆工具,软件的源码难以理解

五.运行在安卓模拟器内

模拟器不能模拟手机拨打之类的,或者常见模拟器内部都会生成对应文件能够检测到。

六.黑盒子

实体的盒子,放在内部能够定位。

七.模拟接口请求

解决思路扩展

7.1.针对常见虚拟定位软件,直接检测软件列表中是否存在或者软件目录是否存在,必须卸载才可以使用。

(显著针对性封禁,可是治标不治本,改个包名又能用)

如:FakeLoction、太极Xposed、Xposed等等…

若是是用在摩拜/美团这类对外开放的APP直接检测会致使用户体验感很差卸载

这种检测方式适用于内部APP

7.2.检测Wifi列表,长时间没变化就是压根没动过位置…或者经过某个算法判断

7.3.根据移动轨迹/历史移动轨迹编写一个判断的算法,例如:

  • 某个点在历史定位中重复次数很是多,有可能就是做为了定位点。
  • 某个范围内,定位经纬度连续相同没有丝毫误差,理论上手机晃动甚至不动也会有经纬度误差。 今年年初我花一个月的时间收录整理了一套知识体系,若是有想法深刻的系统化的去学习的,能够点击传送门,我会把我收录整理的资料都送给你们,帮助你们更快的进阶。

相关文章
相关标签/搜索