Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)
作者:Mark_YPQ 时间:2022-11-14 14:44:43
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的代码 我们就无需过多解释了 上 源代码
源码下载
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/u012889434/article/details/61921933
标签:Hook,Android,位置模拟
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
j2ee之AJAX二级联动效果
2021-09-13 10:06:58
Android 四种获取屏幕宽度的方法总结
2021-12-09 04:31:23
Kafka 日志存储实现过程
2021-11-01 05:04:00
![](https://img.aspxhome.com/file/2023/7/62337_0s.png)
基于spring @Cacheable 注解的spel表达式解析执行逻辑
2023-07-03 19:46:45
![](https://img.aspxhome.com/file/2023/0/113440_0s.jpg)
java实现简单TCP聊天程序
2021-09-29 20:18:15
Java线程之守护线程(Daemon)用法实例
2023-11-29 09:15:13
Java方法的参数传递机制实例详解
2021-05-24 07:38:29
![](https://img.aspxhome.com/file/2023/9/63419_0s.png)
Java 数据流之Broadcast State
2022-05-21 15:17:19
![](https://img.aspxhome.com/file/2023/3/82983_0s.png)
Git和Maven的子模块简单实践
2023-09-22 01:45:55
Java编程在ICPC快速IO实现源码
2021-10-18 01:41:54
详解C#中的属性和属性的使用
2023-12-03 09:51:39
C#内置队列类Queue用法实例
2023-07-18 14:12:05
一文带你了解SpringBoot中常用注解的原理和使用
2022-07-22 14:27:43
Java源码解析之可重入锁ReentrantLock
2021-12-28 22:32:40
C++常见错误中英文对照表
2023-06-05 04:52:13
mybatis根据表逆向自动化生成代码的实现
2023-03-12 15:39:02
![](https://img.aspxhome.com/file/2023/9/61079_0s.png)
解决feign调用接口不稳定的问题
2022-01-13 19:28:46
计算字符串和文件MD5值的小例子
2023-12-10 20:31:19
C#程序执行时间长查询速度慢解决方案
2023-10-31 08:49:05
JAVA IDEA入门使用手册(新手小白必备)
2022-10-21 16:31:25
![](https://img.aspxhome.com/file/2023/2/112082_0s.jpg)