全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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  # Android进阶Hook拦截系统实例化View过程实现App换肤功能  # Android性能优化之plt hook与native线程监控详解  # android的got表HOOK实现代码  # Android下hook点击事件的示例  # Android中的HOOK技术是什么  # 源代码  # 都是  # 我想  # 都有  # 站在  # 世界各地  # 其他的  # 我们可以  # 可以通过  # 希望能  # 看完  # 还需要  # 涉及到  # 谢谢大家  # 重启  # 后才  # 试了  # 很多次  # 源码下载  # 就可以 


相关文章: 广州商城建站系统开发成本与周期如何控制?  如何快速搭建二级域名独立网站?  临沂网站制作企业,临沂第三中学官方网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  济南专业网站制作公司,济南信息工程学校怎么样?  网站制作免费,什么网站能看正片电影?  建站主机与服务器功能差异如何区分?  如何快速查询网站的真实建站时间?  制作网站的模板软件,网站怎么建设?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  公司网站制作价格怎么算,公司办个官网需要多少钱?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  如何选择高性价比服务器搭建个人网站?  建站主机选购指南:核心配置与性价比推荐解析  学校为何禁止电信移动建设网站?  如何用PHP快速搭建CMS系统?  如何通过多用户协作模板快速搭建高效企业网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何在宝塔面板中修改默认建站目录?  Android自定义listview布局实现上拉加载下拉刷新功能  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  建站之星如何快速生成多端适配网站?  如何彻底卸载建站之星软件?  自助网站制作软件,个人如何自助建网站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  PHP正则匹配日期和时间(时间戳转换)的实例代码  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  孙琪峥织梦建站教程如何优化数据库安全?  黑客如何利用漏洞与弱口令入侵网站服务器?  网站app免费制作软件,能免费看各大网站视频的手机app?  如何在企业微信快速生成手机电脑官网?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何在阿里云虚拟主机上快速搭建个人网站?  代刷网站制作软件,别人代刷火车票靠谱吗?  建站之星ASP如何实现CMS高效搭建与安全管理?  广州营销型建站服务商推荐:技术优势与SEO优化解析  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何基于云服务器快速搭建个人网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  建站之星安装步骤有哪些常见问题?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星Pro快速搭建教程:模板选择与功能配置指南  香港服务器租用每月最低只需15元? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。