From 00883757e72c0ee1d540062589a66410a91c9f32 Mon Sep 17 00:00:00 2001 From: jhengazuji Date: Fri, 7 Nov 2025 20:10:56 +0800 Subject: [PATCH] Update hook --- app/libs/hook-release.aar | Bin 6024 -> 6682 bytes .../main/java/com/fongmi/android/tv/App.java | 8 +++++- .../fongmi/android/tv/player/ParseJob.java | 2 ++ .../main/java/com/fongmi/hook/Chromium.java | 26 +++++++++++++++++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/libs/hook-release.aar b/app/libs/hook-release.aar index 9b1aa6e509ebb89448280e3212bac90efc9422e6..976bdca94e38d45ce8568b7531164ea169037a41 100644 GIT binary patch delta 6013 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 diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index 97186d60e..20b8b564e 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.java @@ -13,6 +13,7 @@ import androidx.annotation.Nullable; import androidx.core.os.HandlerCompat; import com.fongmi.android.tv.utils.Notify; +import com.fongmi.hook.Chromium; import com.fongmi.hook.Hook; import com.github.catvod.Init; import com.google.gson.Gson; @@ -31,6 +32,7 @@ public class App extends Application implements Application.ActivityLifecycleCal private Activity activity; private final Gson gson; private final long time; + private boolean sniff; private Hook hook; public App() { @@ -42,6 +44,10 @@ public class App extends Application implements Application.ActivityLifecycleCal handler = HandlerCompat.createAsync(Looper.getMainLooper()); } + public void setSniff(boolean sniff) { + this.sniff = sniff; + } + public void setHook(Hook hook) { this.hook = hook; } @@ -66,7 +72,7 @@ public class App extends Application implements Application.ActivityLifecycleCal @Override public String getPackageName() { - return hook != null ? hook.getPackageName() : getBaseContext().getPackageName(); + return hook != null ? hook.getPackageName() : sniff && Chromium.find() ? Chromium.spoofedPackageName(this) : getBaseContext().getPackageName(); } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java index f1539e7a0..0228b03d7 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java @@ -186,6 +186,7 @@ public class ParseJob implements ParseCallback { private void startWeb(String key, String from, Map headers, String url, String click) { App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, click, this, !url.contains("player/?url=")))); + App.get().setSniff(true); } private Map getHeader(JsonObject object) { @@ -215,6 +216,7 @@ public class ParseJob implements ParseCallback { for (CustomWebView webView : webViews) webView.stop(false); for (CustomWebView webView : webViews) webView.destroy(); if (!webViews.isEmpty()) webViews.clear(); + App.get().setSniff(false); } public void stop() { diff --git a/hook/src/main/java/com/fongmi/hook/Chromium.java b/hook/src/main/java/com/fongmi/hook/Chromium.java index e8df112a5..e190be373 100644 --- a/hook/src/main/java/com/fongmi/hook/Chromium.java +++ b/hook/src/main/java/com/fongmi/hook/Chromium.java @@ -1,5 +1,7 @@ package com.fongmi.hook; +import android.content.Context; +import android.content.pm.PackageManager; import android.os.Looper; import java.util.Arrays; @@ -7,7 +9,7 @@ import java.util.Set; public class Chromium { - public static final String PKG = "com.android.chrome"; + private static final String SYSTEM_SETTINGS_PACKAGE = "com.android.settings"; private static final Set CHROMIUM_CLASS_NAMES = Set.of( "org.chromium.base.buildinfo", @@ -20,6 +22,23 @@ public class Chromium { "" ); + private static final Set BROWSER_PACKAGES = Set.of( + "com.android.chrome", + "com.mi.globalbrowser", + "com.huawei.browser", + "com.heytap.browser", + "com.vivo.browser" + ); + + private static boolean isInstalled(PackageManager pm, String pkg) { + try { + pm.getPackageInfo(pkg, PackageManager.GET_META_DATA); + return true; + } catch (PackageManager.NameNotFoundException ignored) { + return false; + } + } + public static boolean find() { try { return Arrays.stream(Looper.getMainLooper().getThread().getStackTrace()).anyMatch(trace -> CHROMIUM_CLASS_NAMES.contains(trace.getClassName().toLowerCase()) && CHROMIUM_METHOD_NAMES.contains(trace.getMethodName().toLowerCase())); @@ -27,4 +46,9 @@ public class Chromium { return false; } } + + public static String spoofedPackageName(Context context) { + PackageManager pm = context.getPackageManager(); + return BROWSER_PACKAGES.stream().filter(packageName -> isInstalled(pm, packageName)).findFirst().orElse(SYSTEM_SETTINGS_PACKAGE); + } }