I make a xposed module to modify the google messenger application but I have a problem with a class that xposed can't find using the boot class loader :
public class XposedModSendTimestamp implements IXposedHookLoadPackage {
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("com.google.android.apps.messaging"))
return;
XposedBridge.log("Attempt to hook ConversationMessageView.a");
findAndHookMethod("com.google.android.apps.messaging.ui.ConversationMessageView", lpparam.classLoader, "a", Cursor.class, String.class, "boolean", String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable{
//code
}
});
}
}
Errors from xposed log :
09-29 00:20:49.194 I/Xposed ( 729): Loading class com.xposed.florian.messengermod.XposedModSendTimestamp
09-29 00:21:28.915 I/Xposed ( 4465): Attempt to hook ConversationMessageView.a
09-29 00:21:28.927 E/Xposed ( 4465): de.robv.android.xposed.XposedHelpers$ClassNotFoundError: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.XposedHelpers.findClass(XposedHelpers.java:62)
09-29 00:21:28.927 E/Xposed ( 4465): at com.xposed.florian.messengermod.XposedModSendTimestamp.handleLoadPackage(XposedModSendTimestamp.java:17)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.XposedBridge$1.beforeHookedMethod(XposedBridge.java:193)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:720)
09-29 00:21:28.927 E/Xposed ( 4465): at android.app.ActivityThread.handleBindApplication(<Xposed>)
09-29 00:21:28.927 E/Xposed ( 4465): at android.app.ActivityThread.access$1600(ActivityThread.java:159)
09-29 00:21:28.927 E/Xposed ( 4465): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445)
09-29 00:21:28.927 E/Xposed ( 4465): at android.os.Handler.dispatchMessage(Handler.java:102)
09-29 00:21:28.927 E/Xposed ( 4465): at android.os.Looper.loop(Looper.java:152)
09-29 00:21:28.927 E/Xposed ( 4465): at android.app.ActivityThread.main(ActivityThread.java:5507)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.reflect.Method.invoke(Native Method)
09-29 00:21:28.927 E/Xposed ( 4465): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-29 00:21:28.927 E/Xposed ( 4465): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
09-29 00:21:28.927 E/Xposed ( 4465): Caused by: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.Class.classForName(Native Method)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.Class.forName(Class.java:324)
09-29 00:21:28.927 E/Xposed ( 4465): at external.org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:823)
09-29 00:21:28.927 E/Xposed ( 4465): at de.robv.android.xposed.XposedHelpers.findClass(XposedHelpers.java:60)
09-29 00:21:28.927 E/Xposed ( 4465): ... 16 more
09-29 00:21:28.927 E/Xposed ( 4465): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.apps.messaging.ui.ConversationMessageView" on path: DexPathList[[zip file "/data/app/com.google.android.apps.messaging-1/base.apk"],nativeLibraryDirectories=[/data/app/com.google.android.apps.messaging-1/lib/arm64, /data/app/com.google.android.apps.messaging-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
09-29 00:21:28.927 E/Xposed ( 4465): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
09-29 00:21:28.927 E/Xposed ( 4465): ... 20 more
09-29 00:21:28.927 E/Xposed ( 4465): Suppressed: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.Class.classForName(Native Method)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
09-29 00:21:28.927 E/Xposed ( 4465): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
09-29 00:21:28.927 E/Xposed ( 4465): ... 21 more
09-29 00:21:28.927 E/Xposed ( 4465): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
I tried this configuration with the tutorial example from here and it worked so I think it's about the application and possibly about the class loader but I don't know much about this.
So please help me, I don't understand.