android-hacker / VirtualXposed

A simple app to use Xposed without root, unlock the bootloader or modify system image, etc.
https://vxp.app
GNU General Public License v3.0
15.24k stars 2.47k forks source link

Xposed: java.lang.ClassNotFoundException hook时报错 #345

Closed coypanglei closed 5 years ago

coypanglei commented 5 years ago

问题描述

Xposed: java.lang.ClassNotFoundException

E/Xposed: java.lang.ClassNotFoundException: com.android.server.am.ActivityManagerService at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at com.rong.xposed.fakelocation.XFakeLocation$1.afterHookedMethod(Unknown Source) at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:374) at android.app.ActivityThread.systemMain() at java.lang.reflect.Method.invoke(Native Method) at me.weishu.epic.art.method.ArtMethod.invokeInternal(ArtMethod.java:262) at me.weishu.epic.art.method.ArtMethod.invoke(ArtMethod.java:255) at me.weishu.epic.art.method.ArtMethod.ensureResolved(ArtMethod.java:371) at me.weishu.epic.art.Epic.hookMethod(Epic.java:107) at me.weishu.epic.art.Epic.hookMethod(Epic.java:88) at com.taobao.android.dexposed.DexposedBridge.hookMethod(DexposedBridge.java:144) at me.weishu.exposed.ExposedBridge.hookMethod(ExposedBridge.java:203) at java.lang.reflect.Method.invoke(Native Method) at de.robv.android.xposed.XposedHelpers.callStaticMethod(XposedHelpers.java:1308) at de.robv.android.xposed.XposedBridge.hookMethod(XposedBridge.java:205) at de.robv.android.xposed.XposedBridge.hookAllMethods(XposedBridge.java:243) at com.rong.xposed.fakelocation.XFakeLocation.a(Unknown Source) at com.rong.xposed.fakelocation.XFakeLocation.initZygote(Unknown Source) at de.robv.android.xposed.ExposedHelper.callInitZygote(ExposedHelper.java:35) at me.weishu.exposed.ExposedBridge.loadModule(ExposedBridge.java:164) at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:342) at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214) at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5466) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.server.am.ActivityManagerService" on path: DexPathList[[zip file "/data/app/io.va.exposed-2/base.apk"],nativeLibraryDirectories=[/data/app/io.va.exposed-2/lib/arm, /data/app/io.va.exposed-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:324)  at com.rong.xposed.fakelocation.XFakeLocation$1.afterHookedMethod(Unknown Source)  at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:374)  at android.app.ActivityThread.systemMain()  at java.lang.reflect.Method.invoke(Native Method)  at me.weishu.epic.art.method.ArtMethod.invokeInternal(ArtMethod.java:262)  at me.weishu.epic.art.method.ArtMethod.invoke(ArtMethod.java:255)  at me.weishu.epic.art.method.ArtMethod.ensureResolved(ArtMethod.java:371)  at me.weishu.epic.art.Epic.hookMethod(Epic.java:107)  at me.weishu.epic.art.Epic.hookMethod(Epic.java:88)  at com.taobao.android.dexposed.DexposedBridge.hookMethod(DexposedBridge.java:144)  at me.weishu.exposed.ExposedBridge.hookMethod(ExposedBridge.java:203)  at java.lang.reflect.Method.invoke(Native Method)  at de.robv.android.xposed.XposedHelpers.callStaticMethod(XposedHelpers.java:1308)  at de.robv.android.xposed.XposedBridge.hookMethod(XposedBridge.java:205)  at de.robv.android.xposed.XposedBridge.hookAllMethods(XposedBridge.java:243)  at com.rong.xposed.fakelocation.XFakeLocation.a(Unknown Source)  at com.rong.xposed.fakelocation.XFakeLocation.initZygote(Unknown Source)  at de.robv.android.xposed.ExposedHelper.callInitZygote(ExposedHelper.java:35)  at me.weishu.exposed.ExposedBridge.loadModule(ExposedBridge.java:164)  at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:342)  at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214)  at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209)  at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119)  at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:5466)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)  Suppressed: java.lang.ClassNotFoundException: Didn't find class "com.android.server.am.ActivityManagerService" on path: DexPathList[[dex file "/data/dalvik-cache/xposed_XResourcesSuperClass.dex", dex file "/data/dalvik-cache/xposed_XTypedArraySuperClass.dex"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 34 more Suppressed: java.lang.ClassNotFoundException: com.android.server.am.ActivityManagerService at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 35 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

复现步骤

安装xposed 框架 启动插件模块 然后再启动其他非插件模块就会报这个错,看log是没有找到系统的服务,hook没有成功

环境

android studio编译的代码 机型:Xiaomi Redmi Note 4x 系统版本:Android 6.0.1 Xposed 插件以及插件版本: VirtualXposed版本:0.12.9

tiann commented 5 years ago

/data/dalvik-cache/xposed_XResourcesSuperClass.dex

你本机上装有 Xposed,开启了这个模块吗?

coypanglei commented 5 years ago

源码编译Xposed 插件启动就黑屏,非Xposed插件没有问题,release版本也没有问题 #325 已经被关闭的问题 我的问题应该和这个一样,但在Android 6.0.1也遇到同样的问题