From 90e0e5bb77926117188de0dc653ae79f6c6e91c4 Mon Sep 17 00:00:00 2001 From: webbrain-one <295484252+webbrain-one@users.noreply.github.com> Date: Sat, 1 Aug 2026 23:47:18 +0300 Subject: [PATCH] Fix NPE when database password array is null Add null check in beforeHookedMethod for SQLiteDatabase.openDatabase to prevent NullPointerException when the encryption key array is null. --- .../java/am/yiad/wxsqlpasswordhook/XModule.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/AndroidHook/app/src/main/java/am/yiad/wxsqlpasswordhook/XModule.java b/AndroidHook/app/src/main/java/am/yiad/wxsqlpasswordhook/XModule.java index 2eaa320..a38f3e2 100644 --- a/AndroidHook/app/src/main/java/am/yiad/wxsqlpasswordhook/XModule.java +++ b/AndroidHook/app/src/main/java/am/yiad/wxsqlpasswordhook/XModule.java @@ -29,12 +29,17 @@ public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Log.i(TAG, "Path: " + param.args[0]); - Log.i(TAG, "Password: " + new String((byte[]) param.args[1], "UTF-8")); - Formatter formatter = new Formatter(); - for (byte b : (byte[]) param.args[1]) { - formatter.format("%02x", b); + byte[] password = (byte[]) param.args[1]; + if (password != null) { + Log.i(TAG, "Password: " + new String(password, "UTF-8")); + Formatter formatter = new Formatter(); + for (byte b : password) { + formatter.format("%02x", b); + } + Log.i(TAG, "Password (hex): 0x" + formatter.toString()); + } else { + Log.i(TAG, "Password: null"); } - Log.i(TAG, "Password (hex): 0x" + formatter.toString()); Log.i(TAG, "CipherSpec - Cipher: " + XposedHelpers.getObjectField(param.args[2], "cipher")); Log.i(TAG, "CipherSpec - KdfIteration: " + XposedHelpers.getIntField(param.args[2], "kdfIteration")); Log.i(TAG, "CipherSpec - Hmac Enabled: " + XposedHelpers.getBooleanField(param.args[2], "hmacEnabled"));