From ca6615cc4f4ffa35065f96818041b0eb6df82f03 Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Tue, 4 Nov 2025 14:04:48 +0800 Subject: [PATCH] Add chrome hook --- app/libs/hook-release.aar | Bin 4608 -> 6020 bytes hook/build.gradle | 11 ++ .../src/main/java/com/fongmi/hook/Chrome.java | 30 +++ hook/src/main/java/com/fongmi/hook/Hook.java | 181 +++++++++++------- 4 files changed, 151 insertions(+), 71 deletions(-) create mode 100644 hook/src/main/java/com/fongmi/hook/Chrome.java diff --git a/app/libs/hook-release.aar b/app/libs/hook-release.aar index cdd279c20fe2efda4a38e4dfe114b3052a2dc3e6..323f70e0aa46d2e207e209784d8c7f8bfdd9a5f1 100644 GIT binary patch delta 5741 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 O{FhxF&y?!F&Hn;e3m8rS delta 4281 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 b000000HlEs5R;7+JCkk~5C+x|00000NbWNE diff --git a/hook/build.gradle b/hook/build.gradle index d3e6d869b..8a624ad10 100644 --- a/hook/build.gradle +++ b/hook/build.gradle @@ -11,4 +11,15 @@ android { minSdk 24 targetSdk 36 } + + compileOptions { + coreLibraryDesugaringEnabled true + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } +} + +dependencies { + implementation 'androidx.annotation:annotation:1.9.1' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5' } \ No newline at end of file diff --git a/hook/src/main/java/com/fongmi/hook/Chrome.java b/hook/src/main/java/com/fongmi/hook/Chrome.java new file mode 100644 index 000000000..cfb21ff8c --- /dev/null +++ b/hook/src/main/java/com/fongmi/hook/Chrome.java @@ -0,0 +1,30 @@ +package com.fongmi.hook; + +import android.os.Looper; + +import java.util.Arrays; +import java.util.Set; + +public class Chrome { + + public static final String PKG = "com.android.chrome"; + + private static final Set CHROMIUM_CLASS_NAMES = Set.of( + "org.chromium.base.buildinfo", + "org.chromium.base.apkinfo" + ); + + private static final Set CHROMIUM_METHOD_NAMES = Set.of( + "getall", + "getpackagename", + "" + ); + + public static boolean hook() { + try { + return Arrays.stream(Looper.getMainLooper().getThread().getStackTrace()).anyMatch(trace -> CHROMIUM_CLASS_NAMES.contains(trace.getClassName().toLowerCase()) && CHROMIUM_METHOD_NAMES.contains(trace.getMethodName().toLowerCase())); + } catch (Exception e) { + return false; + } + } +} diff --git a/hook/src/main/java/com/fongmi/hook/Hook.java b/hook/src/main/java/com/fongmi/hook/Hook.java index 2df9ace25..cecfeba9f 100644 --- a/hook/src/main/java/com/fongmi/hook/Hook.java +++ b/hook/src/main/java/com/fongmi/hook/Hook.java @@ -1,6 +1,5 @@ package com.fongmi.hook; -import android.annotation.TargetApi; import android.content.ComponentName; import android.content.Intent; import android.content.IntentFilter; @@ -24,8 +23,12 @@ import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.UserHandle; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; + import java.util.List; public class Hook extends PackageManager { @@ -43,134 +46,144 @@ public class Hook extends PackageManager { } @Override - public PackageInfo getPackageInfo(String packageName, int flags) { + public PackageInfo getPackageInfo(@NonNull String packageName, int flags) { PackageInfo info = new PackageInfo(); info.signatures = new Signature[]{new Signature(sign)}; return info; } @Override - @TargetApi(26) - public PackageInfo getPackageInfo(VersionedPackage versionedPackage, int flags) { + @RequiresApi(api = Build.VERSION_CODES.O) + public PackageInfo getPackageInfo(@NonNull VersionedPackage versionedPackage, int flags) { return getPackageInfo(versionedPackage.getPackageName(), flags); } @Override - public String[] currentToCanonicalPackageNames(String[] packageNames) { + public String[] currentToCanonicalPackageNames(@NonNull String[] packageNames) { return new String[0]; } @Override - public String[] canonicalToCurrentPackageNames(String[] packageNames) { + public String[] canonicalToCurrentPackageNames(@NonNull String[] packageNames) { return new String[0]; } @Override - public Intent getLaunchIntentForPackage(String packageName) { + public Intent getLaunchIntentForPackage(@NonNull String packageName) { return null; } @Override - public Intent getLeanbackLaunchIntentForPackage(String packageName) { + public Intent getLeanbackLaunchIntentForPackage(@NonNull String packageName) { return null; } @Override - public int[] getPackageGids(String packageName) { + public int[] getPackageGids(@NonNull String packageName) { return new int[0]; } @Override - public int[] getPackageGids(String packageName, int flags) { + public int[] getPackageGids(@NonNull String packageName, int flags) { return new int[0]; } @Override - public int getPackageUid(String packageName, int flags) { + public int getPackageUid(@NonNull String packageName, int flags) { return 0; } @Override - public PermissionInfo getPermissionInfo(String permName, int flags) { + public PermissionInfo getPermissionInfo(@NonNull String permName, int flags) { return null; } + @NonNull @Override public List queryPermissionsByGroup(String permissionGroup, int flags) { return null; } + @NonNull @Override - public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) { + public PermissionGroupInfo getPermissionGroupInfo(@NonNull String groupName, int flags) { return null; } + @NonNull @Override public List getAllPermissionGroups(int flags) { return null; } + @NonNull @Override - public ApplicationInfo getApplicationInfo(String packageName, int flags) { + public ApplicationInfo getApplicationInfo(@NonNull String packageName, int flags) { return null; } + @NonNull @Override - public ActivityInfo getActivityInfo(ComponentName component, int flags) { + public ActivityInfo getActivityInfo(@NonNull ComponentName component, int flags) { return null; } + @NonNull @Override - public ActivityInfo getReceiverInfo(ComponentName component, int flags) { + public ActivityInfo getReceiverInfo(@NonNull ComponentName component, int flags) { return null; } + @NonNull @Override - public ServiceInfo getServiceInfo(ComponentName component, int flags) { + public ServiceInfo getServiceInfo(@NonNull ComponentName component, int flags) { return null; } + @NonNull @Override - public ProviderInfo getProviderInfo(ComponentName component, int flags) { + public ProviderInfo getProviderInfo(@NonNull ComponentName component, int flags) { return null; } + @NonNull @Override public List getInstalledPackages(int flags) { return null; } + @NonNull @Override - public List getPackagesHoldingPermissions(String[] permissions, int flags) { + public List getPackagesHoldingPermissions(@NonNull String[] permissions, int flags) { return null; } @Override - public int checkPermission(String permName, String packageName) { + public int checkPermission(@NonNull String permName, @NonNull String packageName) { return android.content.pm.PackageManager.PERMISSION_GRANTED; } @Override - public boolean isPermissionRevokedByPolicy(String permName, String packageName) { + public boolean isPermissionRevokedByPolicy(@NonNull String permName, @NonNull String packageName) { return false; } @Override - public boolean addPermission(PermissionInfo info) { + public boolean addPermission(@NonNull PermissionInfo info) { return false; } @Override - public boolean addPermissionAsync(PermissionInfo info) { + public boolean addPermissionAsync(@NonNull PermissionInfo info) { return false; } @Override - public void removePermission(String permName) { + public void removePermission(@NonNull String permName) { } @Override - public int checkSignatures(String packageName1, String packageName2) { + public int checkSignatures(@NonNull String packageName1, @NonNull String packageName2) { return android.content.pm.PackageManager.SIGNATURE_MATCH; } @@ -189,6 +202,7 @@ public class Hook extends PackageManager { return null; } + @NonNull @Override public List getInstalledApplications(int flags) { return null; @@ -200,7 +214,7 @@ public class Hook extends PackageManager { } @Override - public boolean isInstantApp(String packageName) { + public boolean isInstantApp(@NonNull String packageName) { return false; } @@ -209,6 +223,7 @@ public class Hook extends PackageManager { return 0; } + @NonNull @Override public byte[] getInstantAppCookie() { return new byte[0]; @@ -227,6 +242,7 @@ public class Hook extends PackageManager { return new String[0]; } + @NonNull @Override public List getSharedLibraries(int flags) { return null; @@ -237,188 +253,209 @@ public class Hook extends PackageManager { return null; } + @NonNull @Override public FeatureInfo[] getSystemAvailableFeatures() { return new FeatureInfo[0]; } @Override - public boolean hasSystemFeature(String featureName) { + public boolean hasSystemFeature(@NonNull String featureName) { return false; } @Override - public boolean hasSystemFeature(String featureName, int version) { + public boolean hasSystemFeature(@NonNull String featureName, int version) { return false; } @Override - public ResolveInfo resolveActivity(Intent intent, int flags) { + public ResolveInfo resolveActivity(@NonNull Intent intent, int flags) { return null; } + @NonNull @Override - public List queryIntentActivities(Intent intent, int flags) { + public List queryIntentActivities(@NonNull Intent intent, int flags) { return null; } + @NonNull @Override - public List queryIntentActivityOptions(ComponentName caller, Intent[] specifics, Intent intent, int flags) { + public List queryIntentActivityOptions(ComponentName caller, Intent[] specifics, @NonNull Intent intent, int flags) { return null; } + @NonNull @Override - public List queryBroadcastReceivers(Intent intent, int flags) { + public List queryBroadcastReceivers(@NonNull Intent intent, int flags) { return null; } @Override - public ResolveInfo resolveService(Intent intent, int flags) { + public ResolveInfo resolveService(@NonNull Intent intent, int flags) { return null; } + @NonNull @Override - public List queryIntentServices(Intent intent, int flags) { + public List queryIntentServices(@NonNull Intent intent, int flags) { return null; } + @NonNull @Override public List queryIntentContentProviders(Intent intent, int flags) { return null; } @Override - public ProviderInfo resolveContentProvider(String authority, int flags) { + public ProviderInfo resolveContentProvider(@NonNull String authority, int flags) { return null; } + @NonNull @Override public List queryContentProviders(String processName, int uid, int flags) { return null; } + @NonNull @Override - public InstrumentationInfo getInstrumentationInfo(ComponentName className, int flags) { + public InstrumentationInfo getInstrumentationInfo(@NonNull ComponentName className, int flags) { return null; } + @NonNull @Override - public List queryInstrumentation(String targetPackage, int flags) { + public List queryInstrumentation(@NonNull String targetPackage, int flags) { return null; } @Override - public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) { + public Drawable getDrawable(@NonNull String packageName, int resId, ApplicationInfo appInfo) { return null; } + @NonNull @Override - public Drawable getActivityIcon(ComponentName activityName) { + public Drawable getActivityIcon(@NonNull ComponentName activityName) { return null; } + @NonNull @Override - public Drawable getActivityIcon(Intent intent) { + public Drawable getActivityIcon(@NonNull Intent intent) { return null; } @Override - public Drawable getActivityBanner(ComponentName activityName) { + public Drawable getActivityBanner(@NonNull ComponentName activityName) { return null; } @Override - public Drawable getActivityBanner(Intent intent) { + public Drawable getActivityBanner(@NonNull Intent intent) { return null; } + @NonNull @Override public Drawable getDefaultActivityIcon() { return null; } + @NonNull @Override - public Drawable getApplicationIcon(ApplicationInfo info) { + public Drawable getApplicationIcon(@NonNull ApplicationInfo info) { return null; } + @NonNull @Override - public Drawable getApplicationIcon(String packageName) { + public Drawable getApplicationIcon(@NonNull String packageName) { return null; } @Override - public Drawable getApplicationBanner(ApplicationInfo info) { + public Drawable getApplicationBanner(@NonNull ApplicationInfo info) { return null; } @Override - public Drawable getApplicationBanner(String packageName) { + public Drawable getApplicationBanner(@NonNull String packageName) { return null; } @Override - public Drawable getActivityLogo(ComponentName activityName) { + public Drawable getActivityLogo(@NonNull ComponentName activityName) { return null; } @Override - public Drawable getActivityLogo(Intent intent) { + public Drawable getActivityLogo(@NonNull Intent intent) { return null; } @Override - public Drawable getApplicationLogo(ApplicationInfo info) { + public Drawable getApplicationLogo(@NonNull ApplicationInfo info) { return null; } @Override - public Drawable getApplicationLogo(String packageName) { + public Drawable getApplicationLogo(@NonNull String packageName) { return null; } + @NonNull @Override - public Drawable getUserBadgedIcon(Drawable drawable, UserHandle user) { + public Drawable getUserBadgedIcon(@NonNull Drawable drawable, @NonNull UserHandle user) { return null; } + @NonNull @Override - public Drawable getUserBadgedDrawableForDensity(Drawable drawable, UserHandle user, Rect badgeLocation, int badgeDensity) { + public Drawable getUserBadgedDrawableForDensity(@NonNull Drawable drawable, @NonNull UserHandle user, Rect badgeLocation, int badgeDensity) { return null; } + @NonNull @Override - public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) { + public CharSequence getUserBadgedLabel(@NonNull CharSequence label, @NonNull UserHandle user) { return null; } @Override - public CharSequence getText(String packageName, int resid, ApplicationInfo appInfo) { + public CharSequence getText(@NonNull String packageName, int resId, ApplicationInfo appInfo) { return null; } @Override - public XmlResourceParser getXml(String packageName, int resid, ApplicationInfo appInfo) { + public XmlResourceParser getXml(@NonNull String packageName, int resId, ApplicationInfo appInfo) { return null; } + @NonNull @Override - public CharSequence getApplicationLabel(ApplicationInfo info) { + public CharSequence getApplicationLabel(@NonNull ApplicationInfo info) { return null; } + @NonNull @Override - public Resources getResourcesForActivity(ComponentName activityName) { + public Resources getResourcesForActivity(@NonNull ComponentName activityName) { return null; } + @NonNull @Override - public Resources getResourcesForApplication(ApplicationInfo app) { + public Resources getResourcesForApplication(@NonNull ApplicationInfo app) { return null; } + @NonNull @Override - public Resources getResourcesForApplication(String packageName) { + public Resources getResourcesForApplication(@NonNull String packageName) { return null; } @@ -431,55 +468,56 @@ public class Hook extends PackageManager { } @Override - public void setInstallerPackageName(String targetPackage, String installerPackageName) { + public void setInstallerPackageName(@NonNull String targetPackage, String installerPackageName) { } @Override - public String getInstallerPackageName(String packageName) { + public String getInstallerPackageName(@NonNull String packageName) { return null; } @Override - public void addPackageToPreferred(String packageName) { + public void addPackageToPreferred(@NonNull String packageName) { } @Override - public void removePackageFromPreferred(String packageName) { + public void removePackageFromPreferred(@NonNull String packageName) { } + @NonNull @Override public List getPreferredPackages(int flags) { return null; } @Override - public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) { + public void addPreferredActivity(@NonNull IntentFilter filter, int match, ComponentName[] set, @NonNull ComponentName activity) { } @Override - public void clearPackagePreferredActivities(String packageName) { + public void clearPackagePreferredActivities(@NonNull String packageName) { } @Override - public int getPreferredActivities(List outFilters, List outActivities, String packageName) { + public int getPreferredActivities(@NonNull List outFilters, @NonNull List outActivities, String packageName) { return 0; } @Override - public void setComponentEnabledSetting(ComponentName componentName, int newState, int flags) { + public void setComponentEnabledSetting(@NonNull ComponentName componentName, int newState, int flags) { } @Override - public int getComponentEnabledSetting(ComponentName componentName) { + public int getComponentEnabledSetting(@NonNull ComponentName componentName) { return android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; } @Override - public void setApplicationEnabledSetting(String packageName, int newState, int flags) { + public void setApplicationEnabledSetting(@NonNull String packageName, int newState, int flags) { } @Override - public int getApplicationEnabledSetting(String packageName) { + public int getApplicationEnabledSetting(@NonNull String packageName) { return android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; } @@ -489,9 +527,10 @@ public class Hook extends PackageManager { } @Override - public void setApplicationCategoryHint(String packageName, int categoryHint) { + public void setApplicationCategoryHint(@NonNull String packageName, int categoryHint) { } + @NonNull @Override public PackageInstaller getPackageInstaller() { return null;