Java Xposed-如何钩住私有静态方法

Java Xposed-如何钩住私有静态方法,java,android,hook,xposed-framework,Java,Android,Hook,Xposed Framework,暴露的问题: 我想修改android.os.Build中的一些静态字段,例如android.os.Build.BOARD、android.os.Build.DEVICE、android.os.Build.DISPLAY 有3种私有静态方法( 私有静态字符串getString(字符串属性), 私有静态字符串[]getStringList(字符串属性,字符串分隔符), 私有静态long getLong(字符串属性) )在Build.java中 然后我尝试在android.os.Build中钩住静态方

暴露的问题:

我想修改android.os.Build中的一些静态字段,例如android.os.Build.BOARD、android.os.Build.DEVICE、android.os.Build.DISPLAY

有3种私有静态方法( 私有静态字符串getString(字符串属性), 私有静态字符串[]getStringList(字符串属性,字符串分隔符), 私有静态long getLong(字符串属性) )在Build.java中

然后我尝试在android.os.Build中钩住静态方法“getString(String s)”

public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {

    XposedBridge.log(loadPackageParam.packageName + " -> load ");

    Class build = XposedHelpers.findClass(Build.class.getName(), loadPackageParam.classLoader);

    XposedHelpers.findAndHookMethod(build, "getString", String.class, new XC_MethodHook() {
        @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("before ->" + param.args[0]);
            super.beforeHookedMethod(param);
        }

        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("after ->" + param.args[0]);
            super.afterHookedMethod(param);
        }
    });}
我尝试在调用android.os.Build.Model时打印before/after方法中的第一个输入参数。但我错了,它并没有被触发

如何钩住这个私有静态方法 在android.os.Build.java中

private static String getString(String property) {
    return SystemProperties.get(property, UNKNOWN);}
步骤1可以在钩住方法之前引发,但步骤2不能


步骤1可以在钩住方法之前引发,但步骤2不能

我最近也做了你想做的事。选中此项:

最近我也做了一些你想做的事情。选中此项:

您是否尝试了下面的
code
公共静态方法findMethodExact(Class clazz,String methodName,Object…parameterTypes){return findMethodExact(clazz,methodName,getParameterClass(clazz.getClassLoader(),parameterTypes));}
code
@Maddy_at_at_工作,第三季度,我尝试了下面的代码,但仍然不对。我是新来的。你试过下面的
code
公共静态方法findMethodExact(Class clazz,String methodName,Object…parameterTypes){return findMethodExact(clazz,methodName,getParameterClass(clazz.getClassLoader(),parameterTypes));}
code
@Maddy_at_at_工作,第三季度,我试过下面的代码,但仍然不对。我是新来的。
public void initZygote(StartupParam startupParam) throws Throwable {  

    Class clazz = XposedHelpers.findClass(android.os.Build.class.getName(), null);

    Method m = XposedHelpers.findMethodExact(clazz, "getString", String.class);

    m.setAccessible(true);

    XposedBridge.hookMethod(m, new XC_MethodHook() {
        @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
            log("call -> " + (String) param.args[0]);
            super.beforeHookedMethod(param);
        }
    });

    String id = (String) m.invoke(null, "ro.build.id");
    log("step 1 try invoke->" + id);
    log("step 2 Call Build.ID ->" + Build.ID);
}