我目前在我的 Xposed 模块中有这段代码:
public class Test implements IXposedHookLoadPackage, IXposedHookZygoteInit {
@Override
public void initZygote(StartupParam startupParam) throws Throwable {
XposedBridge.log("ZYGOTE INIT");
}
@Override
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if(lpparam.packageName.equals("com.somerandomapp")) {
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedHelpers.findAndHookMethod("java.lang.Class", lpparam.classLoader,
"forName", String.class, boolean.class, ClassLoader.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param1) throws Throwable {
if(((String)param1.args[0]).equals("com.alibaba.wireless.security.mainplugin.SecurityGuardMainPlugin")) {
Class clazz = XposedHelpers.findClass("SecurityGuardMainPlugin", (ClassLoader)param1.args[2]);
XposedHelpers.findAndHookMethod("com.alibaba.wireless.security.a.l.a", (ClassLoader)param1.args[2], "a", clazz, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedHelpers.findAndHookMethod("com.alibaba.wireless.security.a.l.a", lpparam.classLoader, "getSecurityToken", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("Token: " + param.getResult());
}
});
}
});
}
}
});
}
});
}
}
}
我试图在运行时由应用程序动态加载com.alibaba.wireless.security.a.l.a#a
后挂钩该方法。SecurityGuardMainPlugin
然而,我得到了一个ClassNotFoundException
. 这很奇怪,因为正如您在代码中看到的那样,在Class#forName
执行该方法后,我检查是否SecurityGuardMainPlugin
已加载,并且看起来确实如此。
lpparam.classloader
我在最后两个电话中也尝试过,但findAndHookMethod
没有运气。
任何帮助将不胜感激!