有時候削解,hook的時候會遇到方法的參數(shù)是一個自己定義的第三方類這種情況,例如如下:
h(EmvTransInfo em){
...
};
其中,EmvTransInfo是一個開發(fā)者自己定義的類。這種情況下:應(yīng)該首先通過反射拿到這個類披诗。
Class<?> personClass = XposedHelpers.findClass("com.newland.mtype.module.common.emv.EmvTransInfo",lpparam.classLoader);
這里的personClass 就是傳參的自定義類,剩下的原來怎么hook就繼續(xù)怎么寫代碼立磁,代碼如下:
XposedHelpers.findAndHookMethod("com.lakala.core.swiper.ICFieldConstructor", lpparam.classLoader,
"h",
personClass,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("進(jìn)入結(jié)果",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("進(jìn)入結(jié)果",param.getResult().toString());
}
});
}
}