Xposed API的研究。
1.XSharedPreferences的用法,可以读取其他app的SharedPreferences。(只读模式)
/**
*参数一为包名,参数二为文件名
*/
XSharedPreferences xsp = new XSharedPreferences("com.test" ,"mysp");
String x = xsp.getString("123" , "");
XposedBridge.log("+++++++++"+ x);
2.findAndHookMethod()方法的使用。
源app内容:
package com.example;
public class SomeClass {
public int doSomething(String s, int i, MyClass m) {
...
}
}
hook内容
findAndHookMethod("com.example.SomeClass", lpparam.classLoader, String.class, int.class, "com.example.MyClass", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
String oldText = (String) param.args[0];
Log.d("MyModule", oldText);
param.args[0] = "test";
param.args[1] = 42; // auto-boxing is working here
setBooleanField(param.args[2], "great", true);
// This would not work (as MyClass can't be resolved at compile time):
// MyClass myClass = (MyClass) param.args[2];
// myClass.great = true;
}
});