You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Xposed框架Hook目标App中指定的自定义函数?

Xposed Hook指定静态方法的实现步骤

首先确保你已经完成Xposed模块的基础配置:

  • 已在模块的AndroidManifest.xml中添加Xposed框架识别的元数据声明
  • 已引入对应版本的Xposed API依赖
  • 已创建实现IXposedHookLoadPackage接口的入口类,并在xposed_init文件中正确配置该入口类的全路径

核心Hook代码实现

在入口类的handleLoadPackage回调方法中添加如下逻辑即可:

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class XposedEntry implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        // 替换为你要Hook的目标App的实际包名,避免Hook到其他应用
        if (!lpparam.packageName.equals("com.my.app")) {
            return;
        }
        
        XposedHelpers.findAndHookMethod(
                // 目标类的全类名
                "com.my.app.myClass",
                lpparam.classLoader,
                // 目标方法名
                "myFunction",
                // 目标方法的参数类型列表,该方法无参所以无需填写
                new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        super.beforeHookedMethod(param);
                        // 可选:在原方法执行前插入逻辑,比如直接修改返回值,跳过原方法执行
                        param.setResult(996); // 自定义返回int值
                    }

                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        // 可选:在原方法执行后插入逻辑,比如获取原方法的返回值
                        int originalResult = (int) param.getResult();
                        // 可以对原返回值做修改后再返回
                        param.setResult(originalResult + 100);
                    }
                }
        );
    }
}

常见注意事项

  • 类名、方法名必须和反编译得到的代码完全一致,严格区分大小写,否则会抛出类找不到、方法找不到的异常
  • 如果目标App开启了混淆,必须使用反编译后得到的混淆后的类名、方法名,不能直接使用源码中的命名
  • 如果使用LSPosed等衍生框架,需要在模块作用域中勾选目标App,模块修改后需要重启目标App生效

内容的提问来源于stack exchange,提问作者Sleepy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:42:01