
ROOT环境下实现虚拟定位
Fake Location是一款专为Android平台设计的应用,允许用户在不修改系统设置的情况下模拟地理位置。它适用于开发者测试、游戏玩家或任何需要虚拟定位功能的用户。通过此项目,你可以轻松改变你的设备上的GPS位置,仿佛置身于世界的任何角落。
概述😀
Fake Location是一款专为Android平台设计的应用,允许用户在不修改系统设置的情况下模拟地理位置。它适用于开发者测试、游戏玩家或任何需要虚拟定位功能的用户。通过此项目,你可以轻松改变你的设备上的GPS位置,仿佛置身于世界的任何角落。
本教程需要手机带有ROOT权限(必须),非ROOT环境下解析会有极大阻碍,不在本次教程范围。
同时,使用本教程需要一定的逆向思维 ,思路与分析永远比方法更重要。
ps:Fake Location必须要root权限,不然你拿这软件也没啥用
准备工作😁
带有ROOT权限的安卓环境
软件Fake Location(虚拟定位软件)
软件SimpleHook(hook工具,嘎嘎强)
软件DITOR(脱壳软件)
软件MT管理器(管理手机文件)
脱壳🍠
先使用MT管理器看一下软件安装包,居然用的是360加固(太难了,溜了溜了),那么使用DITOR工具对软件安装包进行脱壳,360模式。



如上图,完整的dex文件会有3个(实际可能因软件版本不同不是三个),拿到这几个dex文件就算完成第一步。
解析🍉
我们打开软件看了一下,很可惜,并没有看到什么有用的关键词或者是其他的,同时我们也看了一眼拖出来的dex文件,高度混淆,看不懂,根本看不懂 🙀 🙀(丸辣,呜呜呜~~)
这就没办法了吗? 😫不急,注意看下图,每个新注册的账号它都可以免费领取24小时的会员时间,我们从时间入手【Time】但这个不是关键
我举一个例子:【登录时间-结束时间=会员时间(在线时长)】


所以我们想要从时间入手,就要先定位到他的登录时间,这是我们的关键词就出来了,它就是【getLoginTime】获取登录时间
选择脱出来的dex文件,使用编辑器++,我们搜索方法名getLoginTime
我们可以看到他所用的是iget-wide取值,那关我什么事?🤡 我们可是hook,有结论了就好,不用管其他的
到这里我们已经定位到了关键地方,可以看一下图中方法,有【getLoginTime】【getLoginType】【getProindate】,一个是登录时间,一个是登录类型,一个是结果,都是用的iget-wide取值,那我们直接hook结果就好了


类型是返回值,方法名就是【getProindate】修改值这里,我们要的是时间戳,随便找个网址获取一下就好了,不然跟着图中的改也行,这个随意

然后可以看到在【getProindate】前还有个【getLoginType】类型,可以理解为判定是否为会员,那这里的话,我们可以看一下图中的方法,也是同一个类,往下滑就看到了,叫【getType】类型。这个我们同样hook,如下图所示


到这里专业版解析已经实现了,最后就是模拟线路问题,通过定位是在【ށ.ރ.ؠ.ؠ.֏】类的【ޅ】方法下,把这里给它hook上,就没问题了



至此,教程就算结束了,我们可以通过Fake Location的专业版本去实现虚拟定位,路线模拟等等操作。