Closed
Description
以下是我的hook代码,我要hook,com.ss.android.common.applog.UserInfo
这个类的initUser
方法,这是个native的方法。
Class UserInfo;
try {
UserInfo = loadPackageParam.classLoader.loadClass("com.ss.android.common.applog.UserInfo");
} catch (Exception e) {
XposedBridge.log("找不到类com.ss.android.common.applog.UserInfo");
return;
}
XposedHelpers.findAndHookMethod(UserInfo, "initUser", String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
if (!Server.started) {
String address = Server.start(8080);
XposedBridge.log("服务器已启动: " + address);
}
}
});
以上在afterHookedMethod
里面打印服务器已启动
说明已经hook成功,但是还是报了下面的错误。
....
03-24 11:45:11.557 I/Xposed (23854): 服务器已启动: 172.16.11.68:8080
03-24 11:45:11.572 I/VApp (23854): uncaught :Thread[main,5,main]
03-24 11:45:11.572 I/VApp (23854): java.lang.UnsatisfiedLinkError: No implementation found for int com.ss.android.common.applog.UserInfo.initUser(java.lang.String) (tried Java_com_ss_android_common_applog_UserInfo_initUser and Java_com_ss_android_common_applog_UserInfo_initUser__Ljava_lang_String_2)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.common.applog.UserInfo.initUser(Native Method)
03-24 11:45:11.572 I/VApp (23854): at java.lang.reflect.Method.invoke(Native Method)
03-24 11:45:11.572 I/VApp (23854): at me.weishu.epic.art.method.ArtMethod.invoke(Unknown Source)
03-24 11:45:11.572 I/VApp (23854): at de.robv.android.xposed.DexposedBridge.handleHookedArtMethod(Unknown Source)
03-24 11:45:11.572 I/VApp (23854): at me.weishu.epic.art.entry.Entry.onHookInt(Unknown Source)
03-24 11:45:11.572 I/VApp (23854): at me.weishu.epic.art.entry.Entry.referenceBridge(Unknown Source)
03-24 11:45:11.572 I/VApp (23854): at me.weishu.epic.art.entry.Entry.intBridge(Unknown Source)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.common.applog.c.updateEstr(Anticheat.java:58)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.common.applog.c.init(Anticheat.java:48)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.ugc.live.initialization.task.d.d.execute(IESApiTask.java:64)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.ugc.live.initialization.task.a.run(BaseTask.java:46)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.ugc.live.initialization.b.onApplicationCreate(InitializationManager.java:105)
03-24 11:45:11.572 I/VApp (23854): at com.ss.android.ugc.live.
java.lang.UnsatisfiedLinkError: No implementation found for int com.ss.android.common.applog.UserInfo.initUser
说找不到这个类方法的实现。
我尝试把这个插件放到官方Xposed里面没有报这个错,这个是我的问题还是VirtualXposed的问题?
Update:
后来我改为hook其他非静态非native的方法,就不报错了。
猜测VirtualXposed对hook static
或者native
的方法存在bug。
Thanks