安卓虚拟定位实现与反作弊思路
前言
写这篇博客主要是分享一下虚拟定位的反作弊思路
也是因为个人之前曾做过虚拟定位相关的小软件,也玩了一下VA的虚拟定位,挺有意思的,然后觉得应该在解决反作弊的思路下写一篇分享。
一.安卓开发者模式模拟定位
1.1.实现方式
1)安卓6.0以上 打开开发者模式→模拟位置信息应用
2)安卓6.0以前 打开开发者模式→允许模拟位置
3)调用Android原生SDK提供方法
伪代码如下:
1.2.优缺点
- 使用方便,调用原生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.根据移动轨迹/历史移动轨迹编写一个判断的算法,例如:
- 某个点在历史定位中重复次数非常多,有可能就是作为了定位点。
- 某个范围内,定位经纬度连续相同没有丝毫偏差,理论上手机晃动甚至不动也会有经纬度偏差。 今年年初我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,可以点击传送门,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。
- 百度地图SDK---实现简单定位功能思路解析(采用BaiduMapsAPIDemo代码)
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十四)实现Fragment的缓冲视图和数据,防止重复加载
- 一起来捉妖游戏如何修改定位地址,虚拟位置步数行走,轻松作弊捉妖!
- 安卓开发使用百度地图sdk实现定位,添加marker,城市切换等功能
- 安卓之地图----百度地图实现及简单的定位
- 【Android】18.1 利用安卓内置的定位服务实现位置跟踪
- 教你最新版钉钉考外勤签到定位置免root修改,钉钉打卡虚拟定位,防异常检测,实现在家躺着打卡
- 安卓实现定位功能的4种方式
- 看moveaway如何实现苹果IOS免越狱虚拟定位考勤打卡所有app通通搞定
- 论坛功能实现大概思路及URL锚点HTML定位技术机制、应用与问题
- 安卓开发_慕课网_百度地图_实现定位
- 新教程如何虚拟定位企业微信打卡签到作弊2019,企业微信签到人脸wifi考勤破解!!
- Android 实现锚点定位思路详解
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十一)实现自定义左右滚动的导航栏目--仿美团
- 安卓定时通知的研究与实现思路
- 简单实现安卓里百度地图持续定位
- android(日历+价格)思路简单,实现方便,一看就懂.我是1年安卓新人.
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(六)实现ViewPager最基本的
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第七篇【元素定位介绍】
- 移动GIS开发:第一步安卓地图定位功能的实现