Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)

Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载),第1张

概述Hook实现Android微信、陌陌、探探位置模拟 最近需要对微信,陌陌等程序进行位置模拟实现世界各地发朋友圈,搜索附近人的功能,本着站在巨人肩膀上的原则爱网上搜索一番。

Hook实现AndroID 微信、陌陌 、探探位置模拟

 最近需要对微信,陌陌等程序进行位置模拟 实现世界各地发朋友圈,搜索附近人的功能,本着站在巨人肩膀上的原则 爱网上搜索一番。

 也找到一些 代码和文章,但是代码大都雷同而且都有一个弊端 比如说 微信 对目标函数实现hook之后第一次打开微信 第一次定位是可以改变的

  但是 我如果想更换地址的话 就需要重启手机了,重新加载hook了,试了很多次都是这样满足不了需求。

为了改进这个地方我们从gps定义的源代码流程开始看寻找hook系统函数的突破口 

 我也是看完之后才找到hook的地方 LocationmangerService  这个类

@OverrIDe public voID reportLocation(Location location,boolean passive) { checkCallerIsProvIDer(); //检测权限和uID if (!location.isComplete()) {  Log.w(TAG,"DropPing incomplete location: " + location);  return; }  //发送位置信息 mLocationHandler.removeMessages(MSG_LOCATION_CHANGED,location); Message m = Message.obtain(mLocationHandler,MSG_LOCATION_CHANGED,location); m.arg1 = (passive ? 1 : 0); mLocationHandler.sendMessageAtFrontOfQueue(m); }

那么我们可以hook掉这个location的参数 修改为我们想要定位的地方就可以实现效果了,

 XposedHelpers.findAndHookMethod("com.androID.server.LocationManagerService",lpparam.classLoader,"reportLocation",Location.class,boolean.class,new XC_MethodHook() {  @OverrIDe  protected voID afterHookedMethod(MethodHookParam param) throws Throwable {  super.afterHookedMethod(param);  Location location = (Location) param.args[0];  XposedBrIDge.log("实际 系统 经度"+location.getLatitude() +" 系统 纬度"+location.getLongitude() +"系统 加速度 "+location.getAccuracy());  XSharedPreferences xsp =new XSharedPreferences("com.markypq.gpshook","markypq");  if (xsp.getBoolean("enableHook",true)){   double latitude = Double.valueOf(xsp.getString("lan","117.536246"))+ (double) new Random().nextInt(1000) / 1000000 ;   double longtitude = Double.valueOf(xsp.getString("lon","36.681752"))+ (double) new Random().nextInt(1000) / 1000000 ;   location.setLongitude(longtitude);   location.setLatitude(latitude);   XposedBrIDge.log("hook 系统 经度"+location.getLatitude() +" 系统 纬度"+location.getLongitude() +"系统 加速度 "+location.getAccuracy());  }  } });

如果我想主动调用这个函数 必须要得到这个LocationmangerService 的对象 获取这个对象可以通过hook LocationManager 的构造函数获取,

 XposedBrIDge.hookAllConstructors(LocationManager.class,new XC_MethodHook() {  @OverrIDe  protected voID afterHookedMethod(MethodHookParam param) throws Throwable {  super.afterHookedMethod(param);  if (param.args.length==2) {   Context context = (Context) param.args[0]; //这里的 context   XposedBrIDge.log(" 对 "+getProgramnameByPackagename(context)+" 模拟位置");   //把权限的检查 hook掉   XposedHelpers.findAndHookMethod(context.getClass(),"checkCallingOrSelfPermission",String.class,new XC_MethodHook() {   @OverrIDe   protected voID afterHookedMethod(MethodHookParam param) throws Throwable {    super.afterHookedMethod(param);    if (param.args[0].toString().contains("INSTALL_LOCATION_PROVIDER")){    param.setResult(PackageManager.PERMISSION_GRANTED);    }   }   });   XposedBrIDge.log("LocationManager : " + context.getPackagename() + " class:= " + param.args[1].getClass().toString());   //获取到 locationManagerService 主动调用 对象的 reportLocation 方法 可以去模拟提供位置信息   //这里代码中并没有涉及到主动调用   Object locationManagerService = param.args[1];  }  } });

当然还需要hook一些其他的辅助函数 ,这些函数都可以在 AndroID studio 中看到Java的代码 我们就无需过多解释了 上 源代码

源码下载

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)全部内容,希望文章能够帮你解决Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1146688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存