From e6bb3d515a0aefdf83b897bca46a2547f5738681 Mon Sep 17 00:00:00 2001 From: GuhDoy <46047320+GuhDoy@users.noreply.github.com> Date: Sat, 16 Sep 2023 17:27:16 +0800 Subject: [PATCH] refactor with dexkit 2 --- app/build.gradle | 4 +- .../hooker/deobfuscation/Deobfuscation.java | 45 ++++++++++--------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 99c17ae6..7ff98856 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,8 +73,8 @@ dependencies { implementation "androidx.room:room-ktx:$roomVersion" ksp "androidx.room:room-compiler:$roomVersion" - implementation 'io.reactivex.rxjava3:rxjava:3.1.2' - implementation 'org.luckypray:DexKit:2.0.0-rc' + implementation 'io.reactivex.rxjava3:rxjava:3.1.7' + implementation 'org.luckypray:dexkit:2.0.0-rc2' // https://stackoverflow.com/questions/61195038/excluding-dependency-from-implementation-files implementation files('apktool_2.7.0.jar') implementation 'com.squareup.okhttp3:okhttp:4.11.0' diff --git a/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java b/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java index cad72931..e3984781 100644 --- a/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java +++ b/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java @@ -2,6 +2,11 @@ import android.content.Context; +import org.luckypray.dexkit.DexKitBridge; +import org.luckypray.dexkit.query.FindMethod; +import org.luckypray.dexkit.query.MethodDataList; +import org.luckypray.dexkit.query.matchers.MethodMatcher; + import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -19,11 +24,6 @@ import gm.tieba.tabswitch.XposedContext; import gm.tieba.tabswitch.dao.AcRules; import gm.tieba.tabswitch.dao.Preferences; -import io.luckypray.dexkit.DexKitBridge; -import io.luckypray.dexkit.builder.MethodCallerArgs; -import io.luckypray.dexkit.builder.MethodUsingNumberArgs; -import io.luckypray.dexkit.builder.MethodUsingStringArgs; -import io.luckypray.dexkit.descriptor.member.DexMethodDescriptor; import io.reactivex.rxjava3.subjects.PublishSubject; public class Deobfuscation extends XposedContext { @@ -126,29 +126,32 @@ public void dexkit(final PublishSubject progress) { Objects.requireNonNull(bridge); forEachProgressed(progress, matchers, matcher -> { - Collection ret = null; + MethodDataList ret = null; if (matcher instanceof final StringMatcher stringMatcher) { - ret = bridge.findMethodUsingString( - new MethodUsingStringArgs.Builder() - .usingString(stringMatcher.getStr()) - .build() + ret = bridge.findMethod( + FindMethod.create().matcher( + MethodMatcher.create().usingStrings(stringMatcher.getStr()) + ) ); } else if (matcher instanceof final ResMatcher resMatcher) { - ret = bridge.findMethodUsingNumber( - new MethodUsingNumberArgs.Builder() - .usingNumber(resMatcher.getId()) - .build() + ret = bridge.findMethod( + FindMethod.create().matcher( + MethodMatcher.create().usingNumbers(resMatcher.getId()) + ) ); } else if (matcher instanceof final SmaliMatcher smaliMatcher) { - ret = bridge.findMethodCaller( - new MethodCallerArgs.Builder() - .methodDescriptor(smaliMatcher.toString()) - .build() - ).keySet(); + ret = bridge.findMethod( + FindMethod.create().matcher( + MethodMatcher.create().addInvoke( + MethodMatcher.create().descriptor(smaliMatcher.toString()) + ) + ) + ); } if (ret != null) { - for (final var d : ret) { - AcRules.putRule(matcher.toString(), d.getDeclaringClassName(), d.getName()); + for (final var methodData : ret) { + AcRules.putRule( + matcher.toString(), methodData.getClassName(), methodData.getName()); } } });