Xposed问题:
我想修改android.os.Build中的一些静态字段,例如android.os.Build.BOARD、android.os.Build.DEVICE、android.os.Build.DISPLAY。
Build.java中有3个私有静态方法( private static String getString(String property), private static String[] getStringList(String property, String separator) , private static long getLong(String property) )。
然后我尝试钩住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);}
public static Method findMethodExact(Class> clazz, String methodName, Object... parameterTypes) { return findMethodExact(clazz, methodName, getParameterClasses(clazz.getClassLoader(), parameterTypes)); }
- Prasad