Update hook

pull/605/head
jhengazuji 5 months ago
parent d0b7c7bfe8
commit 00883757e7
  1. BIN
      app/libs/hook-release.aar
  2. 8
      app/src/main/java/com/fongmi/android/tv/App.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  4. 26
      hook/src/main/java/com/fongmi/hook/Chromium.java

Binary file not shown.

@ -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

@ -186,6 +186,7 @@ public class ParseJob implements ParseCallback {
private void startWeb(String key, String from, Map<String, String> 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<String, String> 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() {

@ -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<String> CHROMIUM_CLASS_NAMES = Set.of(
"org.chromium.base.buildinfo",
@ -20,6 +22,23 @@ public class Chromium {
"<init>"
);
private static final Set<String> 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);
}
}

Loading…
Cancel
Save