修改手机定位,输入经纬度模拟手机任意位置

思路:手机系统其实有个文件保存实时经纬度,hook修改从此经纬度就好了

别的app获取到的也是你修改后的经纬度

package camera.app.com.backward.hook.phoneinfo;import android.location.Criteria;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.telephony.TelephonyManager;import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;public class GPShook {public static void HookAndChange(ClassLoader classLoader, final double latitude, final double longtitude) {// 基站信息设置为NullXposedHelpers.findAndHookMethod("android.telephony.TelephonyManager", classLoader,"getCellLocation", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(null);}    });if (Build.VERSION.SDK_INT < Build.VERSION_CODES.BASE) {// 把基站信息设置为NULLXposedHelpers.findAndHookMethod("android.telephony.TelephonyManager", classLoader,"getNeighboringCellInfo", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(null);}});}if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {XposedHelpers.findAndHookMethod(TelephonyManager.class, "getAllCellInfo", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(null);}});// 纬度XposedHelpers.findAndHookMethod("android.location.Location", classLoader, "getLatitude", new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param)throws Throwable {// TODO Auto-generated method stubsuper.beforeHookedMethod(param);param.setResult(latitude);}});// 经度XposedHelpers.findAndHookMethod("android.location.Location", classLoader, "getLongitude", new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param)throws Throwable {// TODO Auto-generated method stubsuper.beforeHookedMethod(param);param.setResult(longtitude);}});XposedHelpers.findAndHookMethod("android.net.wifi.WifiInfo", classLoader, "getBSSID", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult("00-00-00-00-00-00-00-00");}});XposedHelpers.findAndHookMethod("android.net.wifi.WifiInfo", classLoader, "getMacAddress", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult("00-00-00-00-00-00-00-00");}});XposedHelpers.findAndHookMethod("android.net.wifi.WifiManager", classLoader, "isWifiEnabled", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(false);}});XposedHelpers.findAndHookMethod(LocationManager.class, "requiresCell",  new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(false);}});XposedHelpers.findAndHookMethod(LocationManager.class, "requiresNetwork",  new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult(false);}});XposedHelpers.findAndHookMethod(LocationManager.class, "getLastLocation", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {Location l = new Location(LocationManager.GPS_PROVIDER);l.setLatitude(latitude);l.setLongitude(longtitude);l.setAccuracy(100f);l.setTime(0);/*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {l.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());}*/param.setResult(l);}});XposedHelpers.findAndHookMethod(LocationManager.class, "getLastKnownLocation", String.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {Location l = new Location(LocationManager.GPS_PROVIDER);l.setLatitude(latitude);l.setLongitude(longtitude);l.setAccuracy(100f);l.setTime(0);/*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {l.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());}*/param.setResult(l);}});XposedBridge.hookAllMethods(LocationManager.class, "getProviders", new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("gps");param.setResult(arrayList);}});XposedHelpers.findAndHookMethod(LocationManager.class, "getBestProvider", Criteria.class, Boolean.TYPE, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult("gps");}});XposedHelpers.findAndHookMethod(LocationManager.class, "addGpsStatusListener", GpsStatus.Listener.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {if (param.args[0] != null) {XposedHelpers.callMethod(param.args[0], "onGpsStatusChanged", 1);XposedHelpers.callMethod(param.args[0], "onGpsStatusChanged", 3);}}});XposedHelpers.findAndHookMethod(LocationManager.class, "addNmeaListener", GpsStatus.NmeaListener.class, new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {param.setResult(false);}});XposedHelpers.findAndHookMethod("android.location.LocationManager", classLoader,"getGpsStatus", GpsStatus.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {GpsStatus gss = (GpsStatus) param.getResult();if (gss == null)return;Class<?> clazz = GpsStatus.class;Method m = null;for (Method method : clazz.getDeclaredMethods()) {if (method.getName().equals("setStatus")) {if (method.getParameterTypes().length > 1) {m = method;break;}}}if (m == null)return;//access the private setStatus function of GpsStatusm.setAccessible(true);//make the apps belive GPS works fine nowint svCount = 5;int[] prns = {1, 2, 3, 4, 5};float[] snrs = {0, 0, 0, 0, 0};float[] elevations = {0, 0, 0, 0, 0};float[] azimuths = {0, 0, 0, 0, 0};int ephemerisMask = 0x1f;int almanacMask = 0x1f;//5 satellites are fixedint usedInFixMask = 0x1f;XposedHelpers.callMethod(gss, "setStatus", svCount, prns, snrs, elevations, azimuths, ephemerisMask, almanacMask, usedInFixMask);param.args[0] = gss;param.setResult(gss);try {m.invoke(gss, svCount, prns, snrs, elevations, azimuths, ephemerisMask, almanacMask, usedInFixMask);param.setResult(gss);} catch (Exception e) {XposedBridge.log(e);}}});for (Method method : LocationManager.class.getDeclaredMethods()) {if (method.getName().equals("requestLocationUpdates")&& !Modifier.isAbstract(method.getModifiers())&& Modifier.isPublic(method.getModifiers())) {XposedBridge.hookMethod(method, new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {if (param.args.length >= 4 && (param.args[3] instanceof LocationListener)) {LocationListener ll = (LocationListener) param.args[3];Class<?> clazz = LocationListener.class;Method m = null;for (Method method : clazz.getDeclaredMethods()) {if (method.getName().equals("onLocationChanged") && !Modifier.isAbstract(method.getModifiers())) {m = method;break;}}Location l = new Location(LocationManager.GPS_PROVIDER);l.setLatitude(latitude);l.setLongitude(longtitude);l.setAccuracy(10.00f);l.setTime(0);/*   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {l.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());}*/XposedHelpers.callMethod(ll, "onLocationChanged", l);try {if (m != null) {m.invoke(ll, l);}} catch (Exception e) {XposedBridge.log(e);}}}});}if (method.getName().equals("requestSingleUpdate ")&& !Modifier.isAbstract(method.getModifiers())&& Modifier.isPublic(method.getModifiers())) {XposedBridge.hookMethod(method, new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {if (param.args.length >= 3 && (param.args[1] instanceof LocationListener)) {LocationListener ll = (LocationListener) param.args[3];Class<?> clazz = LocationListener.class;Method m = null;for (Method method : clazz.getDeclaredMethods()) {if (method.getName().equals("onLocationChanged") && !Modifier.isAbstract(method.getModifiers())) {m = method;break;}}try {if (m != null) {Location l = new Location(LocationManager.GPS_PROVIDER);l.setLatitude(latitude);l.setLongitude(longtitude);                              l.setAccuracy(100f);l.setTime(0);/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {l.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());}*/m.invoke(ll, l);}} catch (Exception e) {XposedBridge.log(e);}}}});}}}}
}

xposed 修改手机定位相关推荐

  1. xposed修改手机信息

    xposed修改手机联网方式.蓝牙信息.手机基站信息.网络类型. package camera.app.com.backward.hook.phoneinfo;import android.os.Bu ...

  2. iPhone模拟定位(非越狱修改手机定位)

    剩下的事情就是build一下到手机,那么,就可以看到神奇的效果! 本次带来一个简单又好玩的实用功能,比如定位装逼(共享定位非分享可选那种),又或者定位打卡之类,由于改变的是设备级别的定位,本设备所有地 ...

  3. eclipse开发android手机定位

    一.eclipse开发环境搭建 1.  JDK安装和部署 1)  JDK下载 地址:http://www.oracle.com/technetwork/java/javase/downloads/in ...

  4. Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示

    /* 定义全局变量 */ var ulm_Int = null;//保存手机定位信息轮询setInterval的id var isFirstQuery = null;//定义一个变量保存是否是第一次查 ...

  5. xpose修改手机imei码,注入广告

      何为hook  Hook英文翻译过来就是"钩子"的意思,那我们在什么时候使用这个"钩子"呢? 我们知道,在Android操作系统中系统维护着自己的一套事件分 ...

  6. 反编译008神器,修改手机型号与android版本号信息

    一个可以修改手机信息的xposed插件 008神器依赖xposed可修改其他应用获取到的系统参数值,见下图 但是我们直接从网上下载的008神器生成的手机型号和安卓版本号都是好几年前的.下面就来分析下怎 ...

  7. 短视频批量伪原创 视频md5修改手机版

             短视频批量伪原创 视频md5修改手机版          都说人是自私的,只关注与自己相关的事情,不论是"唐山大地震"还是"毒鸡汤",它们都能 ...

  8. 修改安卓定位服务器地址,修改安卓定位服务器地址

    修改安卓定位服务器地址 内容精选 换一换 状态代码由三位数字组成,第一个数字定义了响应的类别,有五种可能取值:1xx:指示信息,表示请求已接收,继续处理.2xx:成功,表示请求已被成功接收.理解.接受 ...

  9. 逆向android-让你也能开发微信的xposed插件-手机root(一)

    逆向android-让你也能开发微信的xposed插件 手机root 手机安装Magisk 开启root手机debugable功能,对所有应用进行断点调试 学习smail语言基本语法 通过断点调试,查 ...

  10. 手机卫士04_ 手机定位_超级管理员_数据库

    手机卫士04_ 手机定位_超级管理员_数据库 1.1 定位功能简介: 常见的定位方式: ①网络定位:(IP地址),拨号上网一般是动态分配,如果网吧公司,就是静态分配的. 比较有名的数据库:纯真Ip数据 ...

最新文章

  1. 科技部认定的独角兽名单来了!共164家
  2. 在Linux下gcc缺省编译,在Linux下GCC将文件合起来编译
  3. checkbox的相关知识点
  4. 关于transform的3D变形函数
  5. [转载]线上应用故障排查之一:高CPU占用
  6. linux中printf命令,Linux中printf命令使用实例
  7. php input 只接收文件内容,一文搞懂$_POST和file_get_contents(“php://input”)的区别
  8. python records库_Python Records库使用举例
  9. Java foreach remove问题分析
  10. Android性能优化-过度绘制解决方案
  11. C语言:for循环用法 完全攻略
  12. [Matlab] Matlab中rand,randn,rands和randi函数使用
  13. 剑侠世界2手游为什么不显示服务器,《剑侠世界2》手游好玩不好玩?这篇采访全都告诉你...
  14. 联想台式计算机 恢复出厂设置,联想台式电脑怎么恢復出厂设置
  15. 10项支持措施!武汉东湖新技术开发区打造中部地区风投创投中心奖励补贴政策解读
  16. UltralSO制作启动盘显示报错:磁盘/映像容量太小
  17. GWAS与eQTL相结合,进一步筛选疾病相关基因
  18. 2020年从放弃保研到考研上岸北航CS的3000字复习建议
  19. java界面设计 代码_Android开发——纯JAVA代码方式界面设计
  20. 室内定位中非视距的识别和抑制算法研究综述

热门文章

  1. 教育OA系统该如何选择?
  2. uniapp引入阿里巴巴矢量图标库
  3. 耳机电声测试仪软件,杭州爱华 AWA6128D双耳机测试仪
  4. golang防止MySQL注入_防止SQL注入解决方案
  5. dex2jar源码解析之总体介绍(一)
  6. 常用装机必备 绿色免安装软件合集 破解高手菜鸟必备(每日更新总有一款适合您
  7. oracle 函数的使用
  8. 图片轮播,鼠标放上去即停止,鼠标移除即播放下一张图片
  9. 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载v2.3-西西软件下载...
  10. iOS AutoLayout