問個關於 Xposed 的小問題

Java huruwo • at 2019-03-23 15:58:20 • 216 Views

使用 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,從那個地方得到這個類。但是太繞了,想知道更簡單的方案。

Total: 1
  • pursuer 2019-03-22 20:37:06
    可以反射帶引數構造的類,用 Constructor.newInstance,輸出類的建構函式簽名就可以知道建構函式用的什麼引數了
Add a reply
For Commenting you need to Login. If you dont have a Account you need to Register.