ac-pm / Inspeckage

Android Package Inspector - dynamic analysis with api hooks, start unexported activities and more. (Xposed Module)
Apache License 2.0
2.81k stars 515 forks source link

FingerprintHook.initAllHooks throws NullPointerException #61

Open deanward81 opened 7 years ago

deanward81 commented 7 years ago

I'm running with the following configuration:

Upon launching any app from within Inspeckage I get the following stack in the Xposed Framework log viewer:

08-06 17:33:31.148 E/Xposed  ( 3313): java.lang.NullPointerException: Attempt to read from field 'java.util.List mobi.acpm.inspeckage.hooks.entities.FingerprintList.fingerprintItems' on a null object reference
08-06 17:33:31.148 E/Xposed  ( 3313):   at mobi.acpm.inspeckage.hooks.FingerprintHook.initAllHooks(FingerprintHook.java:52)
08-06 17:33:31.148 E/Xposed  ( 3313):   at mobi.acpm.inspeckage.Module.handleLoadPackage(Module.java:154)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.XposedInit$2.beforeHookedMethod(XposedInit.java:116)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:314)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.app.ActivityThread.handleBindApplication(<Xposed>)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.app.ActivityThread.-wrap1(ActivityThread.java)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.os.Handler.dispatchMessage(Handler.java:102)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.os.Looper.loop(Looper.java:148)
08-06 17:33:31.148 E/Xposed  ( 3313):   at android.app.ActivityThread.main(ActivityThread.java:5415)
08-06 17:33:31.148 E
/Xposed  ( 3313):   at java.lang.reflect.Method.invoke(Native Method)
08-06 17:33:31.148 E/Xposed  ( 3313):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
08-06 17:33:31.148 E/Xposed  ( 3313):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
08-06 17:33:31.148 E/Xposed  ( 3313):   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)

Looks like a null check at https://github.com/ac-pm/Inspeckage/blob/master/app/src/main/java/mobi/acpm/inspeckage/hooks/FingerprintHook.java#L45 would be sufficient to mitigate this?

I don't have a build environment to hand right now, otherwise I'd submit a PR! Shout if you need anything else.

deanward81 commented 7 years ago

Hmmmm, changing the default value on line 45 from an empty string to an empty array initialiser would be a better fix I guess:

String json = sPrefs.getString("fingerprint_hooks", "")

becomes

String json = sPrefs.getString("fingerprint_hooks", "[]")