Skip to content

Hook到了一个方法,但是afterHookedMethod之后又提示这个方法找不到? #39

Closed
@f111fei

Description

@f111fei

以下是我的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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions