From 1b397f74f330e69ba5c3de8d1799dc3bbc0dc037 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Fri, 6 Jan 2023 22:07:08 +0800 Subject: [PATCH] Register DexParser --- core/src/main/jni/src/context.cpp | 2 ++ core/src/main/jni/src/jni/dex_parser.cpp | 14 ++++++++------ .../java/io/github/libxposed/utils/DexParser.java | 1 - 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/src/main/jni/src/context.cpp b/core/src/main/jni/src/context.cpp index c045bb28..1d057300 100644 --- a/core/src/main/jni/src/context.cpp +++ b/core/src/main/jni/src/context.cpp @@ -26,6 +26,7 @@ #include "jni/hook_bridge.h" #include "jni/native_api.h" #include "jni/resources_hook.h" +#include "jni/dex_parser.h" #include "symbol_cache.h" using namespace lsplant; @@ -87,6 +88,7 @@ namespace lspd { RegisterResourcesHook(env); RegisterHookBridge(env); RegisterNativeAPI(env); + RegisterDexParserBridge(env); } ScopedLocalRef diff --git a/core/src/main/jni/src/jni/dex_parser.cpp b/core/src/main/jni/src/jni/dex_parser.cpp index 31815aa0..7735b91b 100644 --- a/core/src/main/jni/src/jni/dex_parser.cpp +++ b/core/src/main/jni/src/jni/dex_parser.cpp @@ -310,12 +310,14 @@ namespace lspd { auto out6i3i = env->NewObjectArray( static_cast(parameter_annotation->size), object_class, nullptr); for (size_t l = 0; l < parameter_annotation->size; ++l) { - auto *parameter_annotation_item = dex.dataPtr( - parameter_annotation->list[l].annotations_off); - auto out6i3ii = ParseAnnotation(env, dex, object_class, - parameter_annotation_item); - env->SetObjectArrayElement(out6i3i, static_cast(l), out6i3ii); - env->DeleteLocalRef(out6i3ii); + if (parameter_annotation->list[l].annotations_off != 0) { + auto *parameter_annotation_item = dex.dataPtr( + parameter_annotation->list[l].annotations_off); + auto out6i3ii = ParseAnnotation(env, dex, object_class, + parameter_annotation_item); + env->SetObjectArrayElement(out6i3i, static_cast(l), out6i3ii); + env->DeleteLocalRef(out6i3ii); + } } env->SetObjectArrayElement(out6i3, static_cast(k), out6i3i); env->DeleteLocalRef(out6i3i); diff --git a/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java b/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java index c230c140..b5f43f99 100644 --- a/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java +++ b/libxposed/api/src/main/java/io/github/libxposed/utils/DexParser.java @@ -84,7 +84,6 @@ public interface DexParser { @NonNull StringId getName(); - @NonNull int getValueType(); @Nullable