Xposed question:
I want to modify some static field in android.os.Build, such as android.os.Build.BOARD, android.os.Build.DEVICE, android.os.Build.DISPLAY.
There are 3 private static methods ( private static String getString(String property), private static String[] getStringList(String property, String separator) , private static long getLong(String property) ) in Build.java.
Then I tried to hook the static method 'getString(String s)' in android.os.Build .
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);
}
});}
I try to print the first input argument in the before/after method, when I call android.os.Build.Model. But I'm wrong, it has not been triggered.
How can I hook this private static method in android.os.Build.java
private static String getString(String property) {
return SystemProperties.get(property, UNKNOWN);}