有时候,hook的时候会遇到方法的参数是一个自己定义的第三方类这种情况,例如如下:
h(EmvTransInfo em){
...
};
其中,EmvTransInfo是一个开发者自己定义的类。这种情况下:应该首先通过反射拿到这个类。
Class<?> personClass = XposedHelpers.findClass("com.newland.mtype.module.common.emv.EmvTransInfo",lpparam.classLoader);
这里的personClass 就是传参的自定义类,剩下的原来怎么hook就继续怎么写代码,代码如下:
XposedHelpers.findAndHookMethod("com.lakala.core.swiper.ICFieldConstructor", lpparam.classLoader,
"h",
personClass,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("进入结果",param.getResult().toString());
}
});
完整代码如下:
public void handleLoadPackage(LoadPackageParam lpparam)
throws Throwable {
// TODO Auto-generated method stub
if (lpparam.packageName.equals("com.xxx.xxx"))
{
Class<?> personClass = XposedHelpers.findClass("com.newland.mtype.module.common.emv.EmvTransInfo",lpparam.classLoader);
XposedHelpers.findAndHookMethod("com.lakala.core.swiper.ICFieldConstructor", lpparam.classLoader,
"h",
personClass,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("进入结果",param.getResult().toString());
}
});
}
}
网友评论