使用 Xposed newInstance 某个 Class 的时候,发现该类没有默认的构造函数。 直接使用
Class cls2 = XposedHelpers.findClass("com.xx.xx", lpparam.classLoader);
Object object = cls.newInstance()
出现错误如下:
java.lang.InstantiationException: java.lang.Class<com.xx.xx> has no zero argument constructor
at java.lang.Class.newInstance(Native Method)
at com.huruwo.xposed.HookTestLoadPackage.callDyUserInfo(HookTestLoadPackage.java:158)
at com.huruwo.xposed.HookTestLoadPackage.access$300(HookTestLoadPackage.java:36)
at com.huruwo.xposed.HookTestLoadPackage$1.onReceive(HookTestLoadPackage.java:62)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1128)
我们自己写 反射需要无参构造函数,但是这是别人的程序。如何直接newInstance
出这个类呢。
1.我自己的思路就是去 hook 哪个方法使用了 new Class,从那个地方得到这个类。但是太绕了,想知道更简单的方案。
1
pursuer 2019-03-22 11:58:03 +08:00
可以反射带参数构造的类,用 Constructor.newInstance,输出类的构造函数签名就可以知道构造函数用的什么参数了
|
2
jinyang656 2019-03-22 12:29:25 +08:00
XposedHelpers#newInstance(java.lang.Class<?>, java.lang.Object...)
或者 XposedHelpers#newInstance(java.lang.Class<?>, java.lang.Class<?>[], java.lang.Object...) |