wolong810825 发表于 2023-9-8 10:18

求助各位大佬Xposed 怎么HOOK安卓系统函数??

XposedHelpers.findAndHookMethod("android.location.LocationManager", classLoader,      "getGpsStatus", GpsStatus.class, new XC_MethodHook()
      {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable
            {
                GpsStatus gss = (GpsStatus) param.getResult();
                if (gss == null)
                  return;


这段代码是想找到手机的当前位置,并修改当前的手机位置的方法,这个方法直接报异常 ,我在LSposd 是选择的 系统框架这个模块来HOOK的,请问HOOK手机本身的类该怎么操作?
是我代码的问题?还是我HOOK的模块的问题?请大佬给我指点一下。。谢谢了。

正己 发表于 2023-9-8 12:37

本帖最后由 正己 于 2023-9-8 12:40 编辑

1.首先hook系统函数需要重启
2.其次这个方法大概率是重载函数,所以建议用下面这个免填参数的来hook
Class Gps = loadPackageParam.classLoader.loadClass("android.location.LocationManager");
XposedBridge.hookAllMethods(Gps, "getGpsStatus", new XC_MethodHook() {

    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
      super.beforeHookedMethod(param);
      
      }});
3.还有一种可能是就是classload要传对,不然也会找不到方法

wolong810825 发表于 2023-9-8 13:15

谢谢大佬的回复,我去看看。

wystudio 发表于 2023-9-8 14:31

选择的应用应该是你要hook的对应应用,而不是“系统框架”
比如你想让哪个应用的GPS定位变成你修改的那个,就应该把这个应用添加进去

怜渠客 发表于 2023-9-8 16:18

1.看看类名函数名参数填对没有
2.hook系统函数无需重启,hook系统框架才用重启
3.你的目标应用是你想修改的app,而非系统框架
4.classloader不对
5.建议用LocationManager.class,不用findclass

wolong810825 发表于 2023-9-8 18:14

主要目标是手机本身,不是某一个指定的应用,比如我想修改手机本身的当前定位地址,这样所有的APP的地址就都变了。LSposed还必须要选一个应用,所以我就只能选了系统框架。有目标app当然简单了,直接HOOK目标应用关键点就可以了。我其实是想HOOK手机的系统函数。就老报错找不到对应的方法,就很郁闷。。
页: [1]
查看完整版本: 求助各位大佬Xposed 怎么HOOK安卓系统函数??