Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能

一、前言
前文已经介绍了Xposed框架的基本使用规则,本文主要来介绍一个实际案例就是如何通过这个框架来修改系统的地理位置信息来实现隐藏功能,在如今社交工具的发展特别是微信,他有一个实时位置共享功能,那么对于那些不是单身狗的同学来说可能会有些蛋疼,哪天媳妇要查岗发送位置,结果你不在她期望的位置这时候就尴尬了,而且朋友圈在分享内容的时候可以选择当前位置,有的屌丝就像我一样没钱但是又想到处旅游,那么这时候咋们就可以一本正经的装个逼了。
二、定位原理
看到上面说的那么多,感觉这个功能必须要搞起来了,好处太多了,下面咋们就开始操作了,但是在这之前一定要先熟悉Xposed框架的使用规则,还不了解的同学可以去这里查看:Xposed框架的使用规则 在这篇文章中我们了解到了我们只需要在实现了IXposedHookLoadPackage接口的类中的回调方法handleLoadPackage中做拦截操作即可。但是这里我们还得先做一件事,那就是关于Android中的定位系统知识,我们知道手机定位有多种方式,一般有这几种方式:
第一、卫星定位GPS(Global Positioning System)即全球定位系统,是由美国建立的一个卫星导航定位系统,利用该系统,用户可以在全球范围内实现全天候、连续、实时的三维导航定位和测速;另外,利用该系统,用户还能够进行高精度的时间传递和高精度的精密定位。第二、基站定位移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(到达时刻)或 TDOA(到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。第三、WiFi定位每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动;设备在开启Wi-Fi的情况下,无线路由器默认都会进行SSID广播(除非用户手动配置关闭该功能),在广播帧包含了该路由器的MAC地址;采集装置可以通过接收周围AP发送的广播信息获取周围AP的MAC信息和信号强度信息,将这些信息上传到服务器,经过服务器的计算,保存为“MAC-经纬度”的映射,当采集的信息足够多时候就在服务器上建立了一张巨大的WiFi信息网络;当一个设备处在这样的网络中时,可以将收集到的这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备,其计算方式和基站定位位置计算方式相似,也是利用三点定位或多点定位技术;位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。当某些WiFi信息不在数据库中时,可以根据附近其他的WiFi位置信息推断出未知WiFi的位置信息,并上传服务器。
第四、AGPS定位AGPS(AssistedGPS:辅助全球卫星定位系统)是结合GSM/GPRS与传统卫星定位,利用基地台代送辅助卫星信息,以缩减GPS芯片获取卫星信号的延迟时间,受遮盖的室内也能借基地台讯号弥补,减轻GPS芯片对卫星的依赖度。AGPS利用手机基站的信号,辅以连接远程定位服务器的方式下载卫星星历 (英语:Almanac Data),再配合传统的GPS卫星接受器,让定位的速度更快。是一种结合网络基站信息和GPS信息对移动台进行定位的技术,既利用全球卫星定位系统GPS,又利用移动基站,解决了GPS覆盖的问题,可以在2代的G、C网络和3G网络中使用。

在Android中关于这几种定位都有具体的调用方法,所以如果想修改系统的定位信息,那么就必须先了解这几种调用方式,在之前的一篇文章中也说到了,Hook的最关键一点就是需要找到Hook的地方,这个就需要去阅读源码来查找了。在Android中一般获取位置信息就涉及到下面的几个类和方法:
第一个:采用基站定位信息
android.telephony.TelephonyManager+getCellLocation+getPhoneCount+getNeighboringCellInfo+getAllCellInfoandroid.telephony.PhoneStateListener+onCellLocationChanged+onCellInfoChanged第二个:采用Wifi定位信息android.net.wifi.WifiManager+getScanResults+getWifiState+isWifiEnabledandroid.net.wifi.WifiInfo+getMacAddress+getSSID+getBSSIDandroid.net.NetworkInfo+getTypeName+isConnectedOrConnecting+isConnected+isAvailableandroid.telephony.CellInfo+isRegistered第三个:采用GPS定位android.location.LocationManager+getGpsStatus+getLastLocation+getLastKnownLocation+getProviders+getBestProvider+addGpsStatusListener+addNmeaListener

三、拦截操作
有了这些方法和类,下面就开始拦截操作了,但是本文采用是这种拦截方式,因为在多次试验之后,发现Android中很多定位app绝大部分都是采用基站+GPS+Wifi这三种混合方式来进行定位的,但是如果我们要去都拦截这三种方式那就太费劲了,所以这里我们这么干,只拦截操作GPS定位,而其他两种方式拦截之后返回值全部设置空,这样让系统强制的使用GPS定位,为什么要采用GPS定位这种方式呢?因为其他的两种方式在拦截之后去构造假的数据有点麻烦,而对于GPS这种方式咋们只需要构造一个假的Location对象就可以了,操作非常方便。到这里咋们思路有了,下面就来开始操作了:



首先咋们先把其他的定位方式信息拦截之后全部返回null值,这样就可以强制系统使用GPS定位数据了,接下来就开始拦截GPS定位系统数据了,因为本人梦想去台湾看看五月天,所以这里就构造一个假的台北数据:



直接构造一个假的Location对象,然后设置成参数即可,因为这里的location对象是通过回调方式传回去的,所以需要修改参数而不是返回值哦。这里如果有同学想去其他地方,又不知道具体的经纬度信息,该怎么办呢?这个可以使用百度地图的拾取器功能:

点击去之后就可以随意选择地理位置了:

选中之后,可以看到了经纬度信息,在右上角处就可以赋值信息了:


好了,到这里咋们就成功了修改了系统中的地理位置信息,接下来咋们就开始运行了,运行步骤也很简单,先运行模块,然后XposedInstaller工具会提示模块更新或者有新模块需要激活,进入工具点击激活或者更新,然后重启设备生效即可。

四、操作结果演示
当我们再次重启之后,打开百度地图惊奇的发现没什么数据?这里不是我们拦截出错了,而是我们在室内,所以GPS定位可能会失败,所以如果想看到数据需要去室外操作即可,下面是我的百度地图的截图:



有了这地图,咋们就要开始真正的装逼了,先搜索一下附近的美女哈:



这台湾的妹子除了会嗲之外,总是喜欢用英文名哈!先不管了,找个妹子聊聊先~
然后咋们再去去朋友圈晒一晒:

这里先选择地理位置哈。



哈哈,看到了,这个逼装的我措手不及,自己都差点相信了,看到这里的定位信息点击去看到也是真实的,而不是我们以往看到的:"该位置由用户自己定义的",到这里咋们这个逼算是装成功了。

项目下载:http://download.csdn.net/detail/jiangwei0910410003/9655663

五、总结
本文主要介绍了Xposed框架的一个实际使用案例,就是修改设备的地理位置信息,让自己装个逼,但是还是的说,晒图有风险,装逼需谨慎!一切珍重。本文使用了修改地理位置信息实现了周末去一趟台北的愿望功能,也希望大家能够借助这篇文章满足自己多年来的旅游愿望,最后也希望台湾早日回到祖国的怀抱!

更多内容:点击这里

关注微信公众号,最新技术干货实时推送


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容