├── .github └── workflows │ └── main.yml ├── .gitignore ├── Bcore ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ ├── android │ │ ├── accounts │ │ │ ├── IAccountAuthenticator.aidl │ │ │ ├── IAccountAuthenticatorResponse.aidl │ │ │ └── IAccountManagerResponse.aidl │ │ ├── app │ │ │ ├── IActivityManager │ │ │ │ └── ContentProviderHolder.aidl │ │ │ ├── IServiceConnection.aidl │ │ │ ├── IStopUserCallback.aidl │ │ │ ├── IWallpaperManagerCallback.aidl │ │ │ └── job │ │ │ │ ├── IJobCallback.aidl │ │ │ │ ├── IJobService.aidl │ │ │ │ └── JobWorkItem.aidl │ │ ├── content │ │ │ ├── IIntentReceiver.aidl │ │ │ ├── ISyncAdapter.aidl │ │ │ ├── ISyncContext.aidl │ │ │ ├── ISyncStatusObserver.aidl │ │ │ ├── SyncStatusInfo.aidl │ │ │ └── pm │ │ │ │ ├── IPackageDataObserver.aidl │ │ │ │ ├── IPackageDeleteObserver2.aidl │ │ │ │ ├── IPackageInstallObserver.aidl │ │ │ │ ├── IPackageInstallObserver2.aidl │ │ │ │ ├── IPackageInstallerCallback.aidl │ │ │ │ └── IPackageInstallerSession.aidl │ │ ├── database │ │ │ └── IContentObserver.aidl │ │ ├── location │ │ │ └── ILocationListener.aidl │ │ ├── net │ │ │ ├── IConnectivityManager.aidl │ │ │ └── wifi │ │ │ │ └── IWifiScanner.aidl │ │ └── os │ │ │ └── ISystemUpdateManager.aidl │ └── com │ │ ├── android │ │ └── internal │ │ │ └── widget │ │ │ └── ILockSettings.aidl │ │ └── vcore │ │ ├── core │ │ ├── IBActivityThread.aidl │ │ ├── IEmpty.aidl │ │ └── system │ │ │ ├── accounts │ │ │ └── IBAccountManagerService.aidl │ │ │ ├── am │ │ │ ├── IBActivityManagerService.aidl │ │ │ └── IBJobManagerService.aidl │ │ │ ├── device │ │ │ └── IDeviceManagerService.aidl │ │ │ ├── location │ │ │ └── IBLocationManagerService.aidl │ │ │ ├── notification │ │ │ └── IBNotificationManagerService.aidl │ │ │ ├── os │ │ │ └── IBStorageManagerService.aidl │ │ │ ├── pm │ │ │ ├── BPackageSettings.aidl │ │ │ ├── IBPackageInstallerService.aidl │ │ │ ├── IBPackageManagerService.aidl │ │ │ └── IBXposedManagerService.aidl │ │ │ └── user │ │ │ ├── BUserInfo.aidl │ │ │ └── IBUserManagerService.aidl │ │ └── entity │ │ ├── AppConfig.aidl │ │ ├── JobRecord.aidl │ │ ├── UnbindRecord.aidl │ │ ├── am │ │ ├── PendingResultData.aidl │ │ ├── ReceiverData.aidl │ │ ├── RunningAppProcessInfo.aidl │ │ └── RunningServiceInfo.aidl │ │ ├── device │ │ └── BDeviceConfig.aidl │ │ ├── location │ │ ├── BCell.aidl │ │ ├── BLocation.aidl │ │ └── BLocationConfig.aidl │ │ └── pm │ │ ├── InstallOption.aidl │ │ ├── InstallResult.aidl │ │ ├── InstalledModule.aidl │ │ └── InstalledPackage.aidl │ ├── cpp │ ├── BoxCore.cpp │ ├── BoxCore.h │ ├── CMakeLists.txt │ ├── Hook │ │ ├── BaseHook.cpp │ │ ├── BaseHook.h │ │ ├── BinderHook.cpp │ │ ├── BinderHook.h │ │ ├── LinuxHook.cpp │ │ ├── LinuxHook.h │ │ ├── RuntimeHook.cpp │ │ ├── RuntimeHook.h │ │ ├── SystemPropertiesHook.cpp │ │ ├── SystemPropertiesHook.h │ │ ├── UnixFileSystemHook.cpp │ │ ├── UnixFileSystemHook.h │ │ ├── VMClassLoaderHook.cpp │ │ └── VMClassLoaderHook.h │ ├── IO.cpp │ ├── IO.h │ ├── JniHook │ │ ├── ArtMethod.h │ │ ├── JniHook.cpp │ │ └── JniHook.h │ └── Log.h │ ├── java │ ├── android │ │ ├── app │ │ │ ├── ActivityThread.java │ │ │ └── ContentProviderHolder.java │ │ ├── content │ │ │ ├── IContentProvider.java │ │ │ ├── SyncInfo.java │ │ │ ├── SyncStatusInfo.java │ │ │ └── pm │ │ │ │ ├── ManifestDigest.java │ │ │ │ ├── PackageParser.java │ │ │ │ ├── PackageUserState.java │ │ │ │ └── VerifierInfo.java │ │ ├── location │ │ │ └── LocationRequest.java │ │ └── os │ │ │ ├── ParcelableException.java │ │ │ └── ServiceManager.java │ ├── black │ │ ├── Reflector.java │ │ ├── android │ │ │ ├── accounts │ │ │ │ └── IAccountManager.java │ │ │ ├── app │ │ │ │ ├── Activity.java │ │ │ │ ├── ActivityClient.java │ │ │ │ ├── ActivityManagerNative.java │ │ │ │ ├── ActivityManagerOreo.java │ │ │ │ ├── ActivityTaskManager.java │ │ │ │ ├── ActivityThread.java │ │ │ │ ├── ActivityThreadNMR1.java │ │ │ │ ├── ActivityThreadQ.java │ │ │ │ ├── AppOpsManager.java │ │ │ │ ├── ApplicationPackageManager.java │ │ │ │ ├── ApplicationThreadNative.java │ │ │ │ ├── ContextImpl.java │ │ │ │ ├── ContextImplKitkat.java │ │ │ │ ├── IActivityManager.java │ │ │ │ ├── IActivityManagerL.java │ │ │ │ ├── IActivityManagerN.java │ │ │ │ ├── IActivityTaskManager.java │ │ │ │ ├── IAlarmManager.java │ │ │ │ ├── IApplicationThread.java │ │ │ │ ├── ISearchManager.java │ │ │ │ ├── IServiceConnectionO.java │ │ │ │ ├── LoadedApk.java │ │ │ │ ├── NotificationChannel.java │ │ │ │ ├── NotificationChannelGroup.java │ │ │ │ ├── NotificationManager.java │ │ │ │ ├── NotificationO.java │ │ │ │ ├── Service.java │ │ │ │ ├── admin │ │ │ │ │ └── IDevicePolicyManager.java │ │ │ │ ├── job │ │ │ │ │ ├── IJobScheduler.java │ │ │ │ │ └── JobInfo.java │ │ │ │ ├── servertransaction │ │ │ │ │ ├── ClientTransaction.java │ │ │ │ │ └── LaunchActivityItem.java │ │ │ │ └── usage │ │ │ │ │ └── IStorageStatsManager.java │ │ │ ├── bluetooth │ │ │ │ └── IBluetoothManager.java │ │ │ ├── content │ │ │ │ ├── AttributionSource.java │ │ │ │ ├── AttributionSourceState.java │ │ │ │ ├── BroadcastReceiver.java │ │ │ │ ├── ContentProviderClient.java │ │ │ │ ├── ContentProviderHolderOreo.java │ │ │ │ ├── ContentProviderNative.java │ │ │ │ ├── ContentResolver.java │ │ │ │ ├── IContentService.java │ │ │ │ ├── IIntentReceiver.java │ │ │ │ ├── IRestrictionsManager.java │ │ │ │ ├── pm │ │ │ │ │ ├── ApplicationInfoL.java │ │ │ │ │ ├── ApplicationInfoN.java │ │ │ │ │ ├── ILauncherApps.java │ │ │ │ │ ├── IShortcutService.java │ │ │ │ │ ├── PackageParser.java │ │ │ │ │ ├── PackageParserLollipop.java │ │ │ │ │ ├── PackageParserLollipop22.java │ │ │ │ │ ├── PackageParserMarshmallow.java │ │ │ │ │ ├── PackageParserNougat.java │ │ │ │ │ ├── PackageParserPie.java │ │ │ │ │ ├── ParceledListSlice.java │ │ │ │ │ ├── SigningInfo.java │ │ │ │ │ └── UserInfo.java │ │ │ │ └── res │ │ │ │ │ └── AssetManager.java │ │ │ ├── ddm │ │ │ │ └── DdmHandleAppName.java │ │ │ ├── graphics │ │ │ │ └── Compatibility.java │ │ │ ├── hardware │ │ │ │ ├── display │ │ │ │ │ └── DisplayManagerGlobal.java │ │ │ │ └── location │ │ │ │ │ └── IContextHubService.java │ │ │ ├── location │ │ │ │ ├── ILocationListener.java │ │ │ │ ├── ILocationManager.java │ │ │ │ ├── LocationManager.java │ │ │ │ └── provider │ │ │ │ │ └── ProviderProperties.java │ │ │ ├── media │ │ │ │ ├── IMediaRouterService.java │ │ │ │ └── session │ │ │ │ │ └── ISessionManager.java │ │ │ ├── net │ │ │ │ ├── IConnectivityManager.java │ │ │ │ ├── IVpnManager.java │ │ │ │ └── wifi │ │ │ │ │ ├── IWifiManager.java │ │ │ │ │ ├── WifiInfo.java │ │ │ │ │ └── WifiSsid.java │ │ │ ├── os │ │ │ │ ├── Build.java │ │ │ │ ├── Bundle.java │ │ │ │ ├── Handler.java │ │ │ │ ├── IDeviceIdentifiersPolicyService.java │ │ │ │ ├── INetworkManagementService.java │ │ │ │ ├── IPowerManager.java │ │ │ │ ├── IUserManager.java │ │ │ │ ├── IVibratorManagerService.java │ │ │ │ ├── Process.java │ │ │ │ ├── ServiceManager.java │ │ │ │ ├── StrictMode.java │ │ │ │ ├── SystemProperties.java │ │ │ │ ├── UserHandle.java │ │ │ │ ├── mount │ │ │ │ │ └── IMountService.java │ │ │ │ └── storage │ │ │ │ │ ├── IStorageManager.java │ │ │ │ │ ├── StorageManager.java │ │ │ │ │ └── StorageVolume.java │ │ │ ├── permission │ │ │ │ └── IPermissionManager.java │ │ │ ├── providers │ │ │ │ └── Settings.java │ │ │ ├── role │ │ │ │ └── IRoleManager.java │ │ │ ├── security │ │ │ │ └── net │ │ │ │ │ └── config │ │ │ │ │ └── NetworkSecurityConfigProvider.java │ │ │ ├── service │ │ │ │ └── persistentdata │ │ │ │ │ └── IPersistentDataBlockService.java │ │ │ ├── telephony │ │ │ │ └── TelephonyManager.java │ │ │ ├── util │ │ │ │ └── Singleton.java │ │ │ └── view │ │ │ │ ├── IAutoFillManager.java │ │ │ │ ├── IGraphicsStats.java │ │ │ │ ├── IWindowManager.java │ │ │ │ ├── WindowManagerGlobal.java │ │ │ │ └── accessibility │ │ │ │ └── IAccessibilityManager.java │ │ ├── com │ │ │ └── android │ │ │ │ └── internal │ │ │ │ ├── R.java │ │ │ │ ├── app │ │ │ │ └── IAppOpsService.java │ │ │ │ ├── appwidget │ │ │ │ └── IAppWidgetService.java │ │ │ │ ├── content │ │ │ │ └── ReferrerIntent.java │ │ │ │ ├── infra │ │ │ │ └── AndroidFuture.java │ │ │ │ ├── net │ │ │ │ └── VpnConfig.java │ │ │ │ ├── os │ │ │ │ └── IVibratorService.java │ │ │ │ └── telephony │ │ │ │ ├── ISub.java │ │ │ │ ├── ITelephony.java │ │ │ │ └── ITelephonyRegistry.java │ │ ├── dalvik │ │ │ └── system │ │ │ │ └── VMRuntime.java │ │ ├── libcore │ │ │ └── io │ │ │ │ └── Libcore.java │ │ └── oem │ │ │ ├── flyme │ │ │ └── IFlymePermissionService.java │ │ │ └── vivo │ │ │ ├── IPhysicalFlingManager.java │ │ │ ├── IPopupCameraManager.java │ │ │ ├── ISuperResolutionManager.java │ │ │ ├── ISystemDefenceManager.java │ │ │ └── IVivoPermissonService.java │ └── com │ │ └── vcore │ │ ├── BlackBoxCore.java │ │ ├── app │ │ ├── BActivityThread.java │ │ ├── LauncherActivity.java │ │ ├── configuration │ │ │ ├── AppLifecycleCallback.java │ │ │ └── ClientConfiguration.java │ │ └── dispatcher │ │ │ ├── AppJobServiceDispatcher.java │ │ │ └── AppServiceDispatcher.java │ │ ├── core │ │ ├── CrashHandler.java │ │ ├── GmsCore.java │ │ ├── IOCore.java │ │ ├── NativeCore.java │ │ ├── env │ │ │ ├── AppSystemEnv.java │ │ │ ├── BEnvironment.java │ │ │ └── VirtualRuntime.java │ │ └── system │ │ │ ├── BProcessManagerService.java │ │ │ ├── BlackBoxSystem.java │ │ │ ├── DaemonService.java │ │ │ ├── ISystemService.java │ │ │ ├── ProcessRecord.java │ │ │ ├── ServiceManager.java │ │ │ ├── SystemCallProvider.java │ │ │ ├── accounts │ │ │ ├── BAccount.java │ │ │ ├── BAccountManagerService.java │ │ │ ├── BUserAccounts.java │ │ │ ├── RegisteredServicesParser.java │ │ │ └── TokenCache.java │ │ │ ├── am │ │ │ ├── ActiveServices.java │ │ │ ├── ActivityRecord.kt │ │ │ ├── ActivityStack.java │ │ │ ├── BActivityManagerService.java │ │ │ ├── BJobManagerService.java │ │ │ ├── BroadcastManager.java │ │ │ ├── PendingIntentRecord.java │ │ │ ├── TaskRecord.java │ │ │ └── UserSpace.java │ │ │ ├── location │ │ │ ├── BLocationManagerService.java │ │ │ └── LocationRecord.java │ │ │ ├── notification │ │ │ ├── BNotificationManagerService.java │ │ │ └── NotificationRecord.java │ │ │ ├── os │ │ │ └── BStorageManagerService.java │ │ │ ├── pm │ │ │ ├── BPackage.java │ │ │ ├── BPackageInstallerService.java │ │ │ ├── BPackageManagerService.java │ │ │ ├── BPackageSettings.java │ │ │ ├── BPackageUserState.java │ │ │ ├── BXposedManagerService.java │ │ │ ├── ComponentResolver.java │ │ │ ├── FastImmutableArraySet.java │ │ │ ├── IntentResolver.java │ │ │ ├── PackageManagerCompat.java │ │ │ ├── PackageMonitor.java │ │ │ ├── Settings.java │ │ │ ├── SharedUserSetting.java │ │ │ └── installer │ │ │ │ ├── CopyExecutor.java │ │ │ │ ├── CreatePackageExecutor.java │ │ │ │ ├── CreateUserExecutor.java │ │ │ │ ├── Executor.java │ │ │ │ ├── RemoveAppExecutor.java │ │ │ │ └── RemoveUserExecutor.java │ │ │ └── user │ │ │ ├── BUserHandle.java │ │ │ ├── BUserInfo.java │ │ │ ├── BUserManagerService.java │ │ │ └── BUserStatus.java │ │ ├── entity │ │ ├── AppConfig.java │ │ ├── JobRecord.java │ │ ├── ServiceRecord.java │ │ ├── UnbindRecord.java │ │ ├── am │ │ │ ├── PendingResultData.java │ │ │ ├── ReceiverData.java │ │ │ ├── RunningAppProcessInfo.java │ │ │ └── RunningServiceInfo.java │ │ ├── device │ │ │ └── BDeviceConfig.java │ │ ├── location │ │ │ ├── BCell.java │ │ │ ├── BLocation.java │ │ │ └── BLocationConfig.java │ │ └── pm │ │ │ ├── InstallOption.java │ │ │ ├── InstallResult.java │ │ │ ├── InstalledModule.java │ │ │ ├── InstalledPackage.java │ │ │ └── XposedConfig.java │ │ ├── fake │ │ ├── delegate │ │ │ ├── AppInstrumentation.java │ │ │ ├── BaseInstrumentationDelegate.java │ │ │ ├── ContentProviderDelegate.java │ │ │ ├── InnerReceiverDelegate.java │ │ │ └── ServiceConnectionDelegate.java │ │ ├── frameworks │ │ │ ├── BAccountManager.java │ │ │ ├── BActivityManager.java │ │ │ ├── BJobManager.java │ │ │ ├── BLocationManager.java │ │ │ ├── BNotificationManager.java │ │ │ ├── BPackageManager.java │ │ │ ├── BStorageManager.java │ │ │ ├── BUserManager.java │ │ │ ├── BXposedManager.java │ │ │ └── BlackManager.java │ │ ├── hook │ │ │ ├── BinderInvocationStub.java │ │ │ ├── ClassInvocationStub.java │ │ │ ├── HookManager.java │ │ │ ├── IInjectHook.java │ │ │ ├── MethodHook.java │ │ │ ├── ProxyMethod.java │ │ │ ├── ProxyMethods.java │ │ │ └── ScanClass.java │ │ ├── provider │ │ │ ├── FileProvider.java │ │ │ └── FileProviderHandler.java │ │ └── service │ │ │ ├── ActivityManagerCommonProxy.java │ │ │ ├── BuildProxy.java │ │ │ ├── HCallbackProxy.java │ │ │ ├── IAccessibilityManagerProxy.java │ │ │ ├── IAccountManagerProxy.java │ │ │ ├── IActivityClientProxy.java │ │ │ ├── IActivityManagerProxy.java │ │ │ ├── IActivityTaskManagerProxy.java │ │ │ ├── IAlarmManagerProxy.java │ │ │ ├── IAppOpsManagerProxy.java │ │ │ ├── IAppWidgetManagerProxy.java │ │ │ ├── IAutofillManagerProxy.java │ │ │ ├── IBluetoothManagerProxy.java │ │ │ ├── IConnectivityManagerProxy.java │ │ │ ├── IContextHubServiceProxy.java │ │ │ ├── IDeviceIdentifiersPolicyProxy.java │ │ │ ├── IDevicePolicyManagerProxy.java │ │ │ ├── IDisplayManagerProxy.java │ │ │ ├── IFingerprintManagerProxy.java │ │ │ ├── IFlymePermissionServiceProxy.java │ │ │ ├── IGraphicsStatsProxy.java │ │ │ ├── IJobServiceProxy.java │ │ │ ├── ILauncherAppsProxy.java │ │ │ ├── ILocationManagerProxy.java │ │ │ ├── IMediaRouterServiceProxy.java │ │ │ ├── IMediaSessionManagerProxy.java │ │ │ ├── INetworkManagementServiceProxy.java │ │ │ ├── INotificationManagerProxy.java │ │ │ ├── IPackageManagerProxy.java │ │ │ ├── IPermissionManagerProxy.java │ │ │ ├── IPersistentDataBlockServiceProxy.java │ │ │ ├── IPhoneSubInfoProxy.java │ │ │ ├── IPhysicalFlingManagerProxy.java │ │ │ ├── IPopupCameraManagerProxy.java │ │ │ ├── IPowerManagerProxy.java │ │ │ ├── IRoleManagerProxy.java │ │ │ ├── ISearchManagerProxy.java │ │ │ ├── IShortcutManagerProxy.java │ │ │ ├── IStorageManagerProxy.java │ │ │ ├── IStorageStatsManagerProxy.java │ │ │ ├── ISubProxy.java │ │ │ ├── ISuperResolutionManagerProxy.java │ │ │ ├── ISystemDefenceManagerProxy.java │ │ │ ├── ISystemUpdateProxy.java │ │ │ ├── ITelephonyManagerProxy.java │ │ │ ├── ITelephonyRegistryProxy.java │ │ │ ├── IUserManagerProxy.java │ │ │ ├── IVibratorServiceProxy.java │ │ │ ├── IVivoPermissionServiceProxy.java │ │ │ ├── IVpnManagerProxy.java │ │ │ ├── IWifiManagerProxy.java │ │ │ ├── IWifiScannerProxy.java │ │ │ ├── IWindowManagerProxy.java │ │ │ ├── IWindowSessionProxy.java │ │ │ ├── VpnCommonProxy.java │ │ │ ├── base │ │ │ ├── PkgMethodProxy.java │ │ │ ├── UidMethodProxy.java │ │ │ └── ValueMethodProxy.java │ │ │ ├── context │ │ │ ├── ContentServiceProxy.java │ │ │ ├── LocationListenerProxy.java │ │ │ ├── RestrictionsManagerProxy.java │ │ │ └── providers │ │ │ │ ├── BContentProvider.java │ │ │ │ ├── ContentProviderStub.java │ │ │ │ └── SystemProviderStub.java │ │ │ └── libcore │ │ │ └── OsProxy.java │ │ ├── jnihook │ │ ├── JniHook.java │ │ └── MethodUtils.java │ │ ├── proxy │ │ ├── ProxyActivity.java │ │ ├── ProxyBroadcastReceiver.java │ │ ├── ProxyContentProvider.java │ │ ├── ProxyJobService.java │ │ ├── ProxyManifest.java │ │ ├── ProxyPendingActivity.java │ │ ├── ProxyService.java │ │ ├── ProxyVpnService.java │ │ ├── TransparentProxyActivity.java │ │ └── record │ │ │ ├── ProxyActivityRecord.java │ │ │ ├── ProxyBroadcastRecord.java │ │ │ ├── ProxyPendingRecord.java │ │ │ └── ProxyServiceRecord.java │ │ └── utils │ │ ├── AbiUtils.java │ │ ├── ArrayUtils.java │ │ ├── CloseUtils.java │ │ ├── ComponentUtils.java │ │ ├── DrawableUtils.java │ │ ├── FileUtils.java │ │ ├── Md5Utils.java │ │ ├── MethodParameterUtils.java │ │ ├── NativeUtils.java │ │ ├── ShellUtils.java │ │ ├── Slog.java │ │ ├── TrieTree.java │ │ ├── compat │ │ ├── AccountManagerCompat.java │ │ ├── ActivityCompat.java │ │ ├── ActivityManagerCompat.java │ │ ├── ApplicationThreadCompat.java │ │ ├── BuildCompat.java │ │ ├── BundleCompat.java │ │ ├── ContentProviderCompat.java │ │ ├── ContextCompat.java │ │ ├── PackageParserCompat.java │ │ ├── ParceledListSliceCompat.java │ │ ├── StrictModeCompat.java │ │ ├── SystemPropertiesCompat.java │ │ ├── TaskDescriptionCompat.java │ │ └── XposedParserCompat.java │ │ └── provider │ │ └── ProviderCall.java │ └── res │ ├── drawable │ └── ic_launcher.png │ ├── layout │ └── activity_launcher.xml │ ├── values │ ├── strings.xml │ └── styles.xml │ └── xml │ └── filepath.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── reveny │ │ │ └── virtualinject │ │ │ ├── App.java │ │ │ ├── Application.java │ │ │ ├── MainActivity.java │ │ │ ├── ui │ │ │ ├── activity │ │ │ │ ├── BaseActivity.java │ │ │ │ └── MainActivity.java │ │ │ ├── dialog │ │ │ │ └── BlurBehindDialogBuilder.java │ │ │ └── fragment │ │ │ │ ├── BaseFragment.java │ │ │ │ └── HomeFragment.java │ │ │ └── util │ │ │ ├── NavUtil.java │ │ │ ├── ThemeUtil.java │ │ │ ├── Utility.java │ │ │ └── chrome │ │ │ ├── CustomTabsURLSpan.java │ │ │ └── LinkTransformationMethod.java │ └── res │ │ ├── drawable │ │ ├── folder_open_outline.xml │ │ ├── ic_launcher.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── iconsax_closecircle.xml │ │ └── iconsax_tickcircle.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── dialog_about.xml │ │ ├── dialog_item.xml │ │ ├── dialog_title.xml │ │ └── fragment_home.xml │ │ ├── menu │ │ └── menu_home.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── values-night │ │ ├── colors.xml │ │ ├── styles.xml │ │ └── themes.xml │ │ ├── values-sw600dp │ │ └── integer.xml │ │ ├── values-v28 │ │ └── themes.xml │ │ ├── values-v30 │ │ └── themes.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── colors_google.xml │ │ ├── integer.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ ├── themes.xml │ │ ├── themes_custom.xml │ │ └── themes_override.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── reveny │ └── virtualinject │ └── ExampleUnitTest.java ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── preview.jpg └── settings.gradle.kts /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | workflow_dispatch: 4 | push: 5 | pull_request: 6 | 7 | jobs: 8 | Build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout Repository 12 | uses: actions/checkout@v4 13 | 14 | - name: Setup JDK 15 | uses: actions/setup-java@v4 16 | with: 17 | java-version: 17 18 | distribution: temurin 19 | 20 | - name: Setup Gradle 21 | uses: gradle/actions/setup-gradle@v4 22 | 23 | - name: Grant Execute Permission for gradlew 24 | run: chmod +x gradlew 25 | 26 | - name: Build 27 | run: ./gradlew assembleDebug 28 | 29 | - name: Upload Artifact 30 | uses: actions/upload-artifact@v4 31 | with: 32 | name: Virtual-Inject-Debug 33 | path: app/build/outputs/apk/debug/*.apk -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Gradle files 2 | .gradle/ 3 | build/ 4 | 5 | # Local configuration file (sdk path, etc) 6 | local.properties 7 | 8 | # Log/OS Files 9 | *.log 10 | 11 | # Android Studio generated files and folders 12 | captures/ 13 | .externalNativeBuild/ 14 | .cxx/ 15 | *.apk 16 | output.json 17 | 18 | # IntelliJ 19 | *.iml 20 | .idea/ 21 | misc.xml 22 | deploymentTargetDropDown.xml 23 | render.experimental.xml 24 | 25 | # Keystore files 26 | *.jks 27 | *.keystore 28 | 29 | # Google Services (e.g. APIs or Firebase) 30 | google-services.json 31 | 32 | # Android Profiling 33 | *.hprof 34 | *.dm 35 | app/release/output-metadata.json 36 | -------------------------------------------------------------------------------- /Bcore/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Bcore/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | 2 | -keep class com.vcore.** {*; } 3 | -keep class black.** {*; } 4 | -keep class android.** {*; } 5 | -keep class com.android.** {*; } -------------------------------------------------------------------------------- /Bcore/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | 2 | -keep class com.vcore.** {*; } 3 | -keep class black.** {*; } 4 | -keep class android.** {*; } 5 | -keep class com.android.** {*; } 6 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/accounts/IAccountAuthenticatorResponse.aidl: -------------------------------------------------------------------------------- 1 | package android.accounts; 2 | import android.os.Bundle; 3 | 4 | /** 5 | * The interface used to return responses from an {@link IAccountAuthenticator} 6 | */ 7 | interface IAccountAuthenticatorResponse { 8 | void onResult(in Bundle value); 9 | void onRequestContinued(); 10 | void onError(int errorCode, String errorMessage); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/accounts/IAccountManagerResponse.aidl: -------------------------------------------------------------------------------- 1 | package android.accounts; 2 | 3 | import android.os.Bundle; 4 | 5 | /** 6 | * The interface used to return responses for asynchronous calls to the {@link IAccountManager} 7 | */ 8 | interface IAccountManagerResponse { 9 | void onResult(in Bundle value); 10 | void onError(int errorCode, String errorMessage); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/IActivityManager/ContentProviderHolder.aidl: -------------------------------------------------------------------------------- 1 | // ContentProviderHolder.aidl 2 | package android.app.IActivityManager; 3 | 4 | parcelable ContentProviderHolder; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/IServiceConnection.aidl: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.ComponentName; 4 | 5 | /** @hide */ 6 | interface IServiceConnection { 7 | void connected(in ComponentName name, IBinder service); 8 | } 9 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/IStopUserCallback.aidl: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | /** 4 | * Callback to find out when we have finished stopping a user. 5 | * {@hide} 6 | */ 7 | interface IStopUserCallback { 8 | void userStopped(int userId); 9 | void userStopAborted(int userId); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/IWallpaperManagerCallback.aidl: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | /** @hide */ 4 | interface IWallpaperManagerCallback { 5 | void onWallpaperChanged(); 6 | } 7 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/job/IJobService.aidl: -------------------------------------------------------------------------------- 1 | package android.app.job; 2 | 3 | import android.app.job.JobParameters; 4 | 5 | /** 6 | * Interface that the framework uses to communicate with application code that implements a 7 | * JobService. End user code does not implement this interface directly; instead, the app's 8 | * service implementation will extend android.app.job.JobService. 9 | */ 10 | interface IJobService { 11 | /** Begin execution of application's job. */ 12 | void startJob(in JobParameters jobParams); 13 | /** Stop execution of application's job. */ 14 | void stopJob(in JobParameters jobParams); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/app/job/JobWorkItem.aidl: -------------------------------------------------------------------------------- 1 | // JobWorkItem.aidl 2 | package android.app.job; 3 | 4 | parcelable JobWorkItem; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/IIntentReceiver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | /** 7 | * System private API for dispatching intent broadcasts. This is given to the 8 | * activity manager as part of registering for an intent broadcasts, and is 9 | * called when it receives intents. 10 | * 11 | */ 12 | interface IIntentReceiver { 13 | void performReceive(in Intent intent, int resultCode, String data, 14 | in Bundle extras, boolean ordered, boolean sticky, int sendingUser); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/ISyncContext.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.content.SyncResult; 4 | 5 | /** 6 | * Interface used by the SyncAdapter to indicate its progress. 7 | * @hide 8 | */ 9 | interface ISyncContext { 10 | /** 11 | * Call to indicate that the SyncAdapter is making progress. E.g., if this SyncAdapter 12 | * downloads or sends records to/from the server, this may be called after each record 13 | * is downloaded or uploaded. 14 | */ 15 | void sendHeartbeat(); 16 | 17 | /** 18 | * Signal that the corresponding sync session is completed. 19 | * @param result information about this sync session 20 | */ 21 | void onFinished(in SyncResult result); 22 | } 23 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/ISyncStatusObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | interface ISyncStatusObserver { 4 | void onStatusChanged(int which); 5 | } 6 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/SyncStatusInfo.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | parcelable SyncStatusInfo; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageDataObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | /** 4 | * API for package data change related callbacks from the Package Manager. 5 | * Some usage scenarios include deletion of cache directory, generate 6 | * statistics related to code, data, cache usage(TODO) 7 | */ 8 | interface IPackageDataObserver { 9 | void onRemoveCompleted(in String packageName, boolean succeeded); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageDeleteObserver2.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.content.Intent; 4 | 5 | interface IPackageDeleteObserver2 { 6 | void onUserActionRequired(in Intent intent); 7 | void onPackageDeleted(String packageName, int returnCode, String msg); 8 | } 9 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageInstallObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | /** 4 | * API for installation callbacks from the Package Manager. 5 | */ 6 | interface IPackageInstallObserver { 7 | void packageInstalled(in String packageName, int returnCode); 8 | } 9 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageInstallObserver2.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | /** 7 | * API for installation callbacks from the Package Manager. In certain result cases 8 | * additional information will be provided. 9 | */ 10 | interface IPackageInstallObserver2 { 11 | void onUserActionRequired(in Intent intent); 12 | 13 | /** 14 | * The install operation has completed. {@code returnCode} holds a numeric code 15 | * indicating success or failure. In certain cases the {@code extras} Bundle will 16 | * contain additional details: 17 | * 18 | *

19 | * 20 | * 21 | * 25 | * 26 | *
INSTALL_FAILED_DUPLICATE_PERMISSIONTwo strings are provided in the extras bundle: EXTRA_EXISTING_PERMISSION 22 | * is the name of the permission that the app is attempting to define, and 23 | * EXTRA_EXISTING_PACKAGE is the package name of the app which has already 24 | * defined the permission.
27 | */ 28 | void onPackageInstalled(String basePackageName, int returnCode, String msg, in Bundle extras); 29 | } 30 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | interface IPackageInstallerCallback { 4 | void onSessionCreated(int sessionId); 5 | void onSessionBadgingChanged(int sessionId); 6 | void onSessionActiveChanged(int sessionId, boolean active); 7 | void onSessionProgressChanged(int sessionId, float progress); 8 | void onSessionFinished(int sessionId, boolean success); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.content.pm.IPackageInstallObserver2; 4 | import android.content.IntentSender; 5 | import android.os.ParcelFileDescriptor; 6 | 7 | interface IPackageInstallerSession { 8 | void setClientProgress(float progress); 9 | void addClientProgress(float progress); 10 | 11 | String[] getNames(); 12 | ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); 13 | ParcelFileDescriptor openRead(String name); 14 | 15 | void removeSplit(String splitName); 16 | 17 | void close(); 18 | void commit(in IntentSender statusReceiver); 19 | void abandon(); 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/database/IContentObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.database; 2 | 3 | import android.net.Uri; 4 | 5 | interface IContentObserver { 6 | /** 7 | * This method is called when an update occurs to the cursor that is being 8 | * observed. selfUpdate is true if the update was caused by a call to 9 | * commit on the cursor that is being observed. 10 | */ 11 | void onChange(boolean selfUpdate, in Uri uri, int userId); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/location/ILocationListener.aidl: -------------------------------------------------------------------------------- 1 | // ILocationListener.aidl 2 | package android.location; 3 | 4 | import android.location.Location; 5 | import android.os.Bundle; 6 | 7 | interface ILocationListener { 8 | void onLocationChanged(in Location location); 9 | void onStatusChanged(String provider, int status, in Bundle extras); 10 | void onProviderEnabled(String provider); 11 | void onProviderDisabled(String provider); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/net/IConnectivityManager.aidl: -------------------------------------------------------------------------------- 1 | package android.net; 2 | 3 | import android.net.NetworkInfo; 4 | import android.net.LinkProperties; 5 | 6 | interface IConnectivityManager { 7 | NetworkInfo getActiveNetworkInfo(); 8 | NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked); 9 | 10 | NetworkInfo getNetworkInfo(int networkType); 11 | NetworkInfo[] getAllNetworkInfo(); 12 | boolean isActiveNetworkMetered(); 13 | boolean requestRouteToHostAddress(int networkType, int address); 14 | LinkProperties getActiveLinkProperties(); 15 | LinkProperties getLinkProperties(int networkType); 16 | } 17 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/net/wifi/IWifiScanner.aidl: -------------------------------------------------------------------------------- 1 | package android.net.wifi; 2 | 3 | import android.os.Messenger; 4 | import android.os.Bundle; 5 | 6 | interface IWifiScanner { 7 | Messenger getMessenger(); 8 | Bundle getAvailableChannels(int band); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/android/os/ISystemUpdateManager.aidl: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | import android.os.Bundle; 4 | import android.os.PersistableBundle; 5 | 6 | interface ISystemUpdateManager { 7 | Bundle retrieveSystemUpdateInfo(); 8 | void updateSystemUpdateInfo(in PersistableBundle data); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/android/internal/widget/ILockSettings.aidl: -------------------------------------------------------------------------------- 1 | package com.android.internal.widget; 2 | 3 | interface ILockSettings { 4 | void setRecoverySecretTypes(in int[] secretTypes); 5 | int[] getRecoverySecretTypes(); 6 | } 7 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/IBActivityThread.aidl: -------------------------------------------------------------------------------- 1 | // IBActivityThread.aidl 2 | package com.vcore.core; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | import android.os.IBinder; 7 | import android.content.ComponentName; 8 | import android.content.Intent; 9 | import java.util.List; 10 | import android.content.pm.ResolveInfo; 11 | import android.content.pm.ActivityInfo; 12 | import com.vcore.entity.am.ReceiverData; 13 | 14 | interface IBActivityThread { 15 | IBinder getActivityThread(); 16 | void bindApplication(); 17 | void restartJobService(String selfId); 18 | IBinder acquireContentProviderClient(in ProviderInfo providerInfo); 19 | 20 | IBinder peekService(in Intent intent); 21 | void stopService(in Intent componentName); 22 | 23 | void finishActivity(IBinder token); 24 | void handleNewIntent(IBinder token, in Intent intent); 25 | 26 | void scheduleReceiver(in ReceiverData data); 27 | } 28 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/IEmpty.aidl: -------------------------------------------------------------------------------- 1 | // IBActivityThread.aidl 2 | package com.vcore.core; 3 | 4 | // Declare any non-default types here with import statements 5 | interface IEmpty { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/am/IBJobManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBJobManagerService.aidl 2 | package com.vcore.core.system.am; 3 | 4 | import android.content.Intent; 5 | import android.content.ComponentName; 6 | import android.os.IBinder; 7 | import java.lang.String; 8 | import android.app.job.JobInfo; 9 | import com.vcore.entity.JobRecord; 10 | 11 | // Declare any non-default types here with import statements 12 | interface IBJobManagerService { 13 | JobInfo schedule(in JobInfo info, int userId); 14 | JobRecord queryJobRecord(String processName, int jobId, int userId); 15 | void cancelAll(String processName, int userId); 16 | int cancel(String processName, int jobId, int userId); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/device/IDeviceManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IDeviceManagerService.aidl 2 | package com.vcore.core.system.device; 3 | 4 | // Declare any non-default types here with import statements 5 | interface IDeviceManagerService { 6 | /** 7 | * Demonstrates some basic types that you can use as parameters 8 | * and return values in AIDL. 9 | */ 10 | void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, 11 | double aDouble, String aString); 12 | } -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/location/IBLocationManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IFakeLocationManager.aidl 2 | package com.vcore.core.system.location; 3 | 4 | import com.vcore.entity.location.BLocation; 5 | import com.vcore.entity.location.BCell; 6 | 7 | import java.util.List; 8 | 9 | interface IBLocationManagerService { 10 | int getPattern(int userId, String pkg); 11 | 12 | void setPattern(int userId, String pkg, int mode); 13 | 14 | void setCell(int userId, String pkg,in BCell cell); 15 | 16 | void setAllCell(int userId, String pkg,in List cell); 17 | 18 | void setNeighboringCell(int userId, String pkg,in List cells); 19 | List getNeighboringCell(int userId, String pkg); 20 | 21 | void setGlobalCell(in BCell cell); 22 | 23 | void setGlobalAllCell(in List cell); 24 | 25 | void setGlobalNeighboringCell(in List cell); 26 | 27 | List getGlobalNeighboringCell(); 28 | 29 | BCell getCell(int userId, String pkg); 30 | 31 | List getAllCell(int userId, String pkg); 32 | 33 | void setLocation(int userId, String pkg,in BLocation location); 34 | 35 | BLocation getLocation(int userId, String pkg); 36 | 37 | void setGlobalLocation(in BLocation location); 38 | 39 | BLocation getGlobalLocation(); 40 | 41 | void requestLocationUpdates(in IBinder listener, String packageName, int userId); 42 | 43 | void removeUpdates(in IBinder listener); 44 | } -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/notification/IBNotificationManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBNotificationManagerService.aidl 2 | package com.vcore.core.system.notification; 3 | 4 | // Declare any non-default types here with import statements 5 | import android.app.Notification; 6 | import android.app.NotificationChannel; 7 | import android.app.NotificationChannelGroup; 8 | 9 | interface IBNotificationManagerService { 10 | NotificationChannel getNotificationChannel(String channelId, int userId); 11 | 12 | List getNotificationChannels(String packageName, int userId); 13 | 14 | List getNotificationChannelGroups(String packageName, int userId); 15 | 16 | void createNotificationChannel(in NotificationChannel notificationChannel, int userId); 17 | 18 | void deleteNotificationChannel(String channelId, int userId); 19 | 20 | void createNotificationChannelGroup(in NotificationChannelGroup notificationChannelGroup, int userId); 21 | 22 | void deleteNotificationChannelGroup(String groupId, int userId); 23 | 24 | void enqueueNotificationWithTag(int id, String tag, in Notification notification, int userId); 25 | 26 | void cancelNotificationWithTag(int id, String tag, int userId); 27 | } -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/os/IBStorageManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBStorageManagerService.aidl 2 | package com.vcore.core.system.os; 3 | 4 | import android.os.storage.StorageVolume; 5 | import java.lang.String; 6 | import android.net.Uri; 7 | 8 | // Declare any non-default types here with import statements 9 | interface IBStorageManagerService { 10 | StorageVolume[] getVolumeList(int uid, String packageName, int flags, int userId); 11 | Uri getUriForFile(String file); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/pm/BPackageSettings.aidl: -------------------------------------------------------------------------------- 1 | // BPackageSettings.aidl 2 | package com.vcore.core.system.pm; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable BPackageSettings; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/pm/IBPackageInstallerService.aidl: -------------------------------------------------------------------------------- 1 | // IBPackageInstallerService.aidl 2 | package com.vcore.core.system.pm; 3 | 4 | import com.vcore.core.system.pm.BPackageSettings; 5 | import com.vcore.entity.pm.InstallOption; 6 | 7 | // Declare any non-default types here with import statements 8 | interface IBPackageInstallerService { 9 | int installPackageAsUser(in BPackageSettings ps, int userId); 10 | int uninstallPackageAsUser(in BPackageSettings ps, boolean removeApp, int userId); 11 | int clearPackage(in BPackageSettings ps, int userId); 12 | int updatePackage(in BPackageSettings ps); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/pm/IBXposedManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBXposedManagerService.aidl 2 | 3 | package com.vcore.core.system.pm; 4 | 5 | import java.util.List; 6 | import com.vcore.entity.pm.InstalledModule; 7 | 8 | interface IBXposedManagerService { 9 | boolean isXPEnable(); 10 | void setXPEnable(boolean enable); 11 | boolean isModuleEnable(String packageName); 12 | void setModuleEnable(String packageName, boolean enable); 13 | List getInstalledModules(); 14 | } -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/user/BUserInfo.aidl: -------------------------------------------------------------------------------- 1 | // BUserInfo.aidl 2 | package com.vcore.core.system.user; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable BUserInfo; 6 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/core/system/user/IBUserManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBUserManagerService.aidl 2 | package com.vcore.core.system.user; 3 | 4 | // Declare any non-default types here with import statements 5 | import com.vcore.core.system.user.BUserInfo; 6 | import java.util.List; 7 | 8 | interface IBUserManagerService { 9 | BUserInfo getUserInfo(int userId); 10 | boolean exists(int userId); 11 | BUserInfo createUser(int userId); 12 | List getUsers(); 13 | void deleteUser(int userId); 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/AppConfig.aidl: -------------------------------------------------------------------------------- 1 | // AppConfig.aidl 2 | package com.vcore.entity; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable AppConfig; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/JobRecord.aidl: -------------------------------------------------------------------------------- 1 | // JobRecord.aidl 2 | package com.vcore.entity; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable JobRecord; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/UnbindRecord.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity; 2 | 3 | parcelable UnbindRecord; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/am/PendingResultData.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | parcelable PendingResultData; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/am/ReceiverData.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | parcelable ReceiverData; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/am/RunningAppProcessInfo.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | parcelable RunningAppProcessInfo; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/am/RunningServiceInfo.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | parcelable RunningServiceInfo; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/device/BDeviceConfig.aidl: -------------------------------------------------------------------------------- 1 | // BDeviceConfig.aidl 2 | package com.vcore.entity.device; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable BDeviceConfig; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/location/BCell.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.location; 2 | 3 | parcelable BCell; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/location/BLocation.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.location; 2 | 3 | // Declare any non-default types here with import statements 4 | parcelable BLocation; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/location/BLocationConfig.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.location; 2 | 3 | parcelable BLocationConfig; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/pm/InstallOption.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.pm; 2 | 3 | parcelable InstallOption; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/pm/InstallResult.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.pm; 2 | 3 | parcelable InstallResult; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/pm/InstalledModule.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.pm; 2 | 3 | parcelable InstalledModule; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/com/vcore/entity/pm/InstalledPackage.aidl: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.pm; 2 | 3 | parcelable InstalledPackage; -------------------------------------------------------------------------------- /Bcore/src/main/cpp/BoxCore.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_BOXCORE_H 2 | #define BLACKBOX_BOXCORE_H 3 | 4 | #include 5 | #include 6 | 7 | 8 | class BoxCore { 9 | public: 10 | static JavaVM *getJavaVM(); 11 | static int getApiLevel(); 12 | static int getCallingUid(int orig); 13 | static jstring redirectPathString(JNIEnv *env, jstring path); 14 | static jobject redirectPathFile(JNIEnv *env, jobject path); 15 | static void replaceFD(JNIEnv *env, jobject fd); 16 | }; 17 | 18 | 19 | #endif // BLACKBOX_BOXCORE_H 20 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BaseHook.cpp: -------------------------------------------------------------------------------- 1 | #include "BaseHook.h" 2 | 3 | void BaseHook::init(JNIEnv *env) { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BaseHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_BASEHOOK_H 2 | #define BLACKBOX_BASEHOOK_H 3 | 4 | #include 5 | #include 6 | 7 | class BaseHook { 8 | public: 9 | static void init(JNIEnv *env); 10 | }; 11 | 12 | #endif // BLACKBOX_BASEHOOK_H 13 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BinderHook.cpp: -------------------------------------------------------------------------------- 1 | #include "BinderHook.h" 2 | #include 3 | #include 4 | #include "UnixFileSystemHook.h" 5 | #import "JniHook/JniHook.h" 6 | 7 | HOOK_JNI(jint, getCallingUid, JNIEnv *env, jobject obj) { 8 | int orig = orig_getCallingUid(env, obj); 9 | return BoxCore::getCallingUid(orig); 10 | } 11 | 12 | void BinderHook::init(JNIEnv *env) { 13 | const char *clazz = "android/os/Binder"; 14 | JniHook::HookJniFun(env, clazz, "getCallingUid", "()I", (void *) new_getCallingUid, (void **) (&orig_getCallingUid), true); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BinderHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_BINDERHOOK_H 2 | #define BLACKBOX_BINDERHOOK_H 3 | 4 | #include "BaseHook.h" 5 | 6 | class BinderHook : public BaseHook{ 7 | public: 8 | static void init(JNIEnv *env); 9 | }; 10 | 11 | #endif // BLACKBOX_BINDERHOOK_H 12 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/LinuxHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_LINUXHOOK_H 2 | #define BLACKBOX_LINUXHOOK_H 3 | 4 | #include "BaseHook.h" 5 | 6 | class LinuxHook : public BaseHook { 7 | public: 8 | static void init(JNIEnv *env); 9 | }; 10 | 11 | #endif // BLACKBOX_LINUXHOOK_H 12 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/RuntimeHook.cpp: -------------------------------------------------------------------------------- 1 | #include "RuntimeHook.h" 2 | #import "JniHook/JniHook.h" 3 | #include "BoxCore.h" 4 | 5 | HOOK_JNI(jstring, nativeLoad, JNIEnv *env, jobject obj, jstring name, jobject class_loader) { 6 | const char *nameC = env->GetStringUTFChars(name, JNI_FALSE); 7 | ALOGD("nativeLoad: %s", nameC); 8 | jstring result = orig_nativeLoad(env, obj, name, class_loader); 9 | env->ReleaseStringUTFChars(name, nameC); 10 | return result; 11 | } 12 | 13 | HOOK_JNI(jstring, nativeLoadNew, JNIEnv *env, jobject obj, jstring name, jobject class_loader, 14 | jobject caller) { 15 | const char *nameC = env->GetStringUTFChars(name, JNI_FALSE); 16 | ALOGD("nativeLoad: %s", nameC); 17 | jstring result = orig_nativeLoadNew(env, obj, name, class_loader, caller); 18 | env->ReleaseStringUTFChars(name, nameC); 19 | return result; 20 | } 21 | 22 | void RuntimeHook::init(JNIEnv *env) { 23 | const char *className = "java/lang/Runtime"; 24 | if (BoxCore::getApiLevel() >= __ANDROID_API_Q__) { 25 | JniHook::HookJniFun(env, className, "nativeLoad","(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/String;", 26 | (void *) new_nativeLoadNew, (void **) (&orig_nativeLoadNew), true); 27 | } else { 28 | JniHook::HookJniFun(env, className, "nativeLoad","(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String;", 29 | (void *) new_nativeLoad, (void **) (&orig_nativeLoad), true); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/RuntimeHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_RUNTIMEHOOK_H 2 | #define BLACKBOX_RUNTIMEHOOK_H 3 | 4 | #include "BaseHook.h" 5 | #include 6 | 7 | class RuntimeHook : public BaseHook { 8 | public: 9 | static void init(JNIEnv *env); 10 | }; 11 | 12 | #endif // BLACKBOX_RUNTIMEHOOK_H 13 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/SystemPropertiesHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_SYSTEMPROPERTIESHOOK_H 2 | #define BLACKBOX_SYSTEMPROPERTIESHOOK_H 3 | 4 | #include 5 | #include "BaseHook.h" 6 | #include 7 | 8 | class SystemPropertiesHook : public BaseHook{ 9 | public: 10 | static void init(JNIEnv *env); 11 | }; 12 | 13 | #endif // BLACKBOX_SYSTEMPROPERTIESHOOK_H 14 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/UnixFileSystemHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_UNIXFILESYSTEMHOOK_H 2 | #define BLACKBOX_UNIXFILESYSTEMHOOK_H 3 | 4 | #include "BaseHook.h" 5 | 6 | class UnixFileSystemHook : public BaseHook { 7 | public: 8 | static void init(JNIEnv *env); 9 | }; 10 | 11 | #endif // BLACKBOX_UNIXFILESYSTEMHOOK_H 12 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/VMClassLoaderHook.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "VMClassLoaderHook.h" 3 | #import "JniHook/JniHook.h" 4 | 5 | static bool hideXposedClass = false; 6 | 7 | HOOK_JNI(jobject, findLoadedClass, JNIEnv *env, jobject obj, jobject class_loader, jstring name) { 8 | const char * nameC = env->GetStringUTFChars(name, JNI_FALSE); 9 | // ALOGD("findLoadedClass: %s", nameC); 10 | if (hideXposedClass) { 11 | if (strstr(nameC, "de/robv/android/xposed/") || 12 | strstr(nameC, "me/weishu/epic") || 13 | strstr(nameC, "me/weishu/exposed") || 14 | strstr(nameC, "de.robv.android") || 15 | strstr(nameC, "me.weishu.epic") || 16 | strstr(nameC, "me.weishu.exposed")) { 17 | env->ReleaseStringUTFChars(name, nameC); 18 | return nullptr; 19 | } 20 | } 21 | jobject result = orig_findLoadedClass(env, obj, class_loader, name); 22 | env->ReleaseStringUTFChars(name, nameC); 23 | return result; 24 | } 25 | 26 | void VMClassLoaderHook::init(JNIEnv *env) { 27 | const char *className = "java/lang/VMClassLoader"; 28 | JniHook::HookJniFun(env, className, "findLoadedClass", "(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;", 29 | (void *) new_findLoadedClass, (void **) (&orig_findLoadedClass), true); 30 | } 31 | 32 | void VMClassLoaderHook::hideXposed() { 33 | hideXposedClass = true; 34 | } 35 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/VMClassLoaderHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_VMCLASSLOADERHOOK_H 2 | #define BLACKBOX_VMCLASSLOADERHOOK_H 3 | 4 | #include "BaseHook.h" 5 | #include 6 | 7 | class VMClassLoaderHook : public BaseHook { 8 | public: 9 | static void hideXposed(); 10 | static void init(JNIEnv *env); 11 | }; 12 | 13 | #endif // BLACKBOX_VMCLASSLOADERHOOK_H 14 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/IO.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_IO_H 2 | #define BLACKBOX_IO_H 3 | 4 | #if defined(__LP64__) 5 | #define LINKER_PATH_L "/system/bin/linker64" 6 | #define LINKER_PATH_Q "/apex/com.android.runtime/bin/linker64" 7 | #define LIBC_PATH_L "/system/lib64/libc.so" 8 | #define LIBC_PATH_Q "/apex/com.android.runtime/lib64/bionic/libc.so" 9 | #else 10 | #define LINKER_PATH_L "/system/bin/linker" 11 | #define LINKER_PATH_Q "/apex/com.android.runtime/bin/linker" 12 | #define LIBC_PATH_L "/system/lib/libc.so" 13 | #define LIBC_PATH_Q "/apex/com.android.runtime/lib/bionic/libc.so" 14 | #endif 15 | 16 | #include 17 | 18 | #include 19 | #include 20 | #include "BoxCore.h" 21 | 22 | using namespace std; 23 | 24 | class IO { 25 | public: 26 | static void init(JNIEnv *env); 27 | 28 | struct RelocateInfo { 29 | const char *targetPath; 30 | const char *relocatePath; 31 | }; 32 | 33 | static void addRule(const char *targetPath, const char *relocatePath); 34 | 35 | static void addWhiteList(const char *path); 36 | 37 | static jstring redirectPath(JNIEnv *env, jstring path); 38 | 39 | static jobject redirectPath(JNIEnv *env, jobject path); 40 | 41 | static void replaceFD(JNIEnv *env, jobject fd); 42 | 43 | }; 44 | 45 | #endif // BLACKBOX_IO_H 46 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/JniHook/JniHook.h: -------------------------------------------------------------------------------- 1 | #ifndef BLACKBOX_JNIHOOK_H 2 | #define BLACKBOX_JNIHOOK_H 3 | 4 | #include "ArtMethod.h" 5 | 6 | #define HOOK_JNI(ret, func, ...) \ 7 | ret (*orig_##func)(__VA_ARGS__); \ 8 | ret new_##func(__VA_ARGS__) 9 | 10 | class JniHook { 11 | public: 12 | static void InitJniHook(JNIEnv *env, int api_level); 13 | static void HookJniFun(JNIEnv *env, const char *class_name, const char *method_name, const char *sign, void *new_fun, void **orig_fun, bool is_static); 14 | static void HookJniFun(JNIEnv *env, jobject java_method, void *new_fun, void **orig_fun, bool is_static); 15 | }; 16 | 17 | #endif // BLACKBOX_JNIHOOK_H 18 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Log.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define TAG "NativeCore" 4 | 5 | #if 1 6 | #define log_print_error(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__) 7 | #define log_print_debug(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__) 8 | #else 9 | #define log_print_error(...) 10 | #endif 11 | 12 | #define ALOGE(...) log_print_error(__VA_ARGS__) 13 | #define ALOGD(...) log_print_debug(__VA_ARGS__) 14 | 15 | #ifndef SPEED_LOG_H 16 | #define SPEED_LOG_H 1 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /Bcore/src/main/java/android/app/ContentProviderHolder.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.IContentProvider; 4 | import android.content.pm.ProviderInfo; 5 | import android.os.IBinder; 6 | 7 | public class ContentProviderHolder { 8 | public final ProviderInfo info = null; 9 | public IContentProvider provider; 10 | public IBinder connection; 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | public interface IContentProvider extends IInterface { } -------------------------------------------------------------------------------- /Bcore/src/main/java/android/content/pm/PackageUserState.java: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.util.ArraySet; 4 | 5 | public class PackageUserState { 6 | public boolean stopped; 7 | public boolean notLaunched; 8 | public boolean installed; 9 | public boolean hidden; // Is the app restricted by owner/admin 10 | public int enabled; 11 | public boolean blockUninstall; 12 | 13 | public String lastDisableAppCaller; 14 | 15 | public ArraySet disabledComponents; 16 | public ArraySet enabledComponents; 17 | 18 | public int domainVerificationStatus; 19 | public int appLinkGeneration; 20 | 21 | public PackageUserState() { 22 | throw new RuntimeException("Stub!"); 23 | } 24 | 25 | public PackageUserState(final PackageUserState o) { 26 | throw new RuntimeException("Stub!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bcore/src/main/java/android/content/pm/VerifierInfo.java: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | import java.security.PublicKey; 7 | 8 | public class VerifierInfo implements Parcelable { 9 | public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 10 | public VerifierInfo createFromParcel(final Parcel source) { 11 | return new VerifierInfo(source); 12 | } 13 | 14 | public VerifierInfo[] newArray(final int size) { 15 | return new VerifierInfo[size]; 16 | } 17 | }; 18 | 19 | public VerifierInfo(final String packageName, final PublicKey publicKey) { 20 | throw new RuntimeException("Stub!"); 21 | } 22 | 23 | private VerifierInfo(final Parcel source) { 24 | throw new RuntimeException("Stub!"); 25 | } 26 | 27 | @Override 28 | public int describeContents() { 29 | throw new RuntimeException("Stub!"); 30 | } 31 | 32 | @Override 33 | public void writeToParcel(final Parcel dest, final int flags) { 34 | throw new RuntimeException("Stub!"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Bcore/src/main/java/android/location/LocationRequest.java: -------------------------------------------------------------------------------- 1 | package android.location; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | public final class LocationRequest implements Parcelable { 7 | public static final Creator CREATOR = new Creator() { 8 | @Override 9 | public LocationRequest createFromParcel(Parcel in) { 10 | return null; 11 | } 12 | 13 | @Override 14 | public LocationRequest[] newArray(int size) { 15 | return null; 16 | } 17 | }; 18 | 19 | @Override 20 | public int describeContents() { 21 | return 0; 22 | } 23 | 24 | @Override 25 | public void writeToParcel(Parcel dest, int flags) { } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/android/os/ServiceManager.java: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | public class ServiceManager { 4 | public static IBinder getService(String name) { 5 | throw new UnsupportedOperationException("Stub!"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/accounts/IAccountManager.java: -------------------------------------------------------------------------------- 1 | package black.android.accounts; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAccountManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.accounts.IAccountManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/Activity.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.content.pm.ActivityInfo; 5 | import android.os.IBinder; 6 | 7 | import black.Reflector; 8 | 9 | public class Activity { 10 | public static final Reflector REF = Reflector.on("android.app.Activity"); 11 | 12 | public static Reflector.FieldWrapper mActivityInfo = REF.field("mActivityInfo"); 13 | public static Reflector.FieldWrapper mFinished = REF.field("mFinished"); 14 | public static Reflector.FieldWrapper mParent = REF.field("mParent"); 15 | public static Reflector.FieldWrapper mResultCode = REF.field("mResultCode"); 16 | public static Reflector.FieldWrapper mResultData = REF.field("mResultData"); 17 | public static Reflector.FieldWrapper mToken = REF.field("mToken"); 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityClient.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class ActivityClient { 8 | public static final Reflector REF = Reflector.on("android.app.ActivityClient"); 9 | 10 | public static Reflector.FieldWrapper INTERFACE_SINGLETON = REF.field("INTERFACE_SINGLETON"); 11 | 12 | public static Reflector.StaticMethodWrapper getInstance = REF.staticMethod("getInstance"); 13 | public static Reflector.StaticMethodWrapper getActivityClientController = REF.staticMethod("getActivityClientController"); 14 | 15 | public static class ActivityClientControllerSingleton { 16 | public static final Reflector REF = Reflector.on("android.app.ActivityClient$ActivityClientControllerSingleton"); 17 | 18 | public static Reflector.FieldWrapper mKnownInstance = REF.field("mKnownInstance"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityManagerNative.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class ActivityManagerNative { 8 | public static final Reflector REF = Reflector.on("android.app.ActivityManagerNative"); 9 | 10 | public static Reflector.FieldWrapper gDefault = REF.field("gDefault"); 11 | 12 | public static Reflector.StaticMethodWrapper getDefault = REF.staticMethod("getDefault"); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityManagerOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import black.Reflector; 4 | 5 | public class ActivityManagerOreo { 6 | public static final Reflector REF = Reflector.on("android.app.ActivityManager"); 7 | 8 | public static Reflector.FieldWrapper IActivityManagerSingleton = REF.field("IActivityManagerSingleton"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityTaskManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import black.Reflector; 4 | 5 | public class ActivityTaskManager { 6 | public static final Reflector REF = Reflector.on("android.app.ActivityTaskManager"); 7 | 8 | public static Reflector.FieldWrapper IActivityTaskManagerSingleton = REF.field("IActivityTaskManagerSingleton"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityThreadNMR1.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import black.Reflector; 8 | 9 | public class ActivityThreadNMR1 { 10 | public static final Reflector REF = Reflector.on("android.app.ActivityThread"); 11 | 12 | public static Reflector.MethodWrapper performNewIntents = REF.method("performNewIntents", IBinder.class, List.class, boolean.class); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ActivityThreadQ.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import black.Reflector; 8 | 9 | public class ActivityThreadQ { 10 | public static final Reflector REF = Reflector.on("android.app.ActivityThread"); 11 | 12 | public static Reflector.MethodWrapper handleNewIntent = REF.method("handleNewIntent", IBinder.class, List.class); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/AppOpsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class AppOpsManager { 8 | public static final Reflector REF = Reflector.on("android.app.AppOpsManager"); 9 | 10 | public static Reflector.FieldWrapper mService = REF.field("mService"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ApplicationPackageManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class ApplicationPackageManager { 8 | public static final Reflector REF = Reflector.on("android.app.ApplicationPackageManager"); 9 | 10 | public static Reflector.FieldWrapper mPM = REF.field("mPM"); 11 | public static Reflector.FieldWrapper mPermissionManager = REF.field("mPermissionManager"); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ApplicationThreadNative.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ApplicationThreadNative { 9 | public static final Reflector REF = Reflector.on("android.app.ApplicationThreadNative"); 10 | 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ContextImpl.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageManager; 5 | 6 | import black.Reflector; 7 | 8 | public class ContextImpl { 9 | public static final Reflector REF = Reflector.on("android.app.ContextImpl"); 10 | 11 | public static Reflector.FieldWrapper mBasePackageName = REF.field("mBasePackageName"); 12 | public static Reflector.FieldWrapper mPackageInfo = REF.field("mPackageInfo"); 13 | public static Reflector.FieldWrapper mPackageManager = REF.field("mPackageManager"); 14 | 15 | public static Reflector.MethodWrapper setOuterContext = REF.method("setOuterContext", Context.class); 16 | public static Reflector.MethodWrapper getAttributionSource = REF.method("getAttributionSource"); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ContextImplKitkat.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import black.Reflector; 4 | 5 | public class ContextImplKitkat { 6 | public static final Reflector REF = Reflector.on("android.app.ContextImpl"); 7 | 8 | public static Reflector.FieldWrapper mOpPackageName = REF.field("mOpPackageName"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IActivityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.content.pm.ProviderInfo; 5 | import android.os.Bundle; 6 | import android.os.IBinder; 7 | import android.os.IInterface; 8 | 9 | import black.Reflector; 10 | 11 | public class IActivityManager { 12 | public static final Reflector REF = Reflector.on("android.app.IActivityManager"); 13 | 14 | public static Reflector.MethodWrapper getTaskForActivity = REF.method("getTaskForActivity", IBinder.class, boolean.class); 15 | public static Reflector.MethodWrapper setRequestedOrientation = REF.method("setRequestedOrientation", IBinder.class, int.class); 16 | public static Reflector.MethodWrapper startActivity = REF.method("startActivity", Reflector.findClass("android.app.IApplicationThread"), String.class, Intent.class, String.class, IBinder.class, String.class, int.class, int.class, Reflector.findClass("android.app.ProfilerInfo"), Bundle.class); 17 | 18 | public static class ContentProviderHolder { 19 | public static final Reflector REF = Reflector.on("android.app.IActivityManager$ContentProviderHolder"); 20 | 21 | public static Reflector.FieldWrapper info = REF.field("info"); 22 | public static Reflector.FieldWrapper provider = REF.field("provider"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IActivityManagerL.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import black.Reflector; 7 | 8 | public class IActivityManagerL { 9 | public static final Reflector REF = Reflector.on("android.app.IActivityManager"); 10 | 11 | public static Reflector.MethodWrapper finishActivity = REF.method("finishActivity", IBinder.class, int.class, Intent.class, boolean.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IActivityManagerN.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import black.Reflector; 7 | 8 | public class IActivityManagerN { 9 | public static final Reflector REF = Reflector.on("android.app.IActivityManager"); 10 | 11 | public static Reflector.MethodWrapper finishActivity = REF.method("finishActivity", IBinder.class, int.class, Intent.class, int.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IActivityTaskManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IActivityTaskManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.IActivityTaskManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IAlarmManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAlarmManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.IAlarmManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IApplicationThread.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IApplicationThread { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.IApplicationThread$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/ISearchManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 19:57 12 | **/ 13 | public class ISearchManager { 14 | public static final Reflector REF = Reflector.on("android.app.ISearchManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector REF = Reflector.on("android.app.ISearchManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/IServiceConnectionO.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.ComponentName; 4 | import android.os.IBinder; 5 | 6 | import black.Reflector; 7 | 8 | public class IServiceConnectionO { 9 | public static final Reflector REF = Reflector.on("android.app.IServiceConnection"); 10 | 11 | public static Reflector.MethodWrapper connected = REF.method("connected", ComponentName.class, IBinder.class, boolean.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/NotificationChannel.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import black.Reflector; 4 | 5 | public class NotificationChannel { 6 | public static final Reflector REF = Reflector.on("android.app.NotificationChannel"); 7 | 8 | public static Reflector.FieldWrapper mId = REF.field("mId"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/NotificationChannelGroup.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import java.util.List; 4 | 5 | import black.Reflector; 6 | 7 | public class NotificationChannelGroup { 8 | public static final Reflector REF = Reflector.on("android.app.NotificationChannelGroup"); 9 | 10 | public static Reflector.FieldWrapper> mChannels = REF.field("mChannels"); 11 | public static Reflector.FieldWrapper mId = REF.field("mId"); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class NotificationManager { 8 | public static final Reflector REF = Reflector.on("android.app.NotificationManager"); 9 | 10 | public static Reflector.FieldWrapper sService = REF.field("sService"); 11 | public static Reflector.StaticMethodWrapper getService = REF.staticMethod("getService"); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/NotificationO.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import black.Reflector; 4 | 5 | public class NotificationO { 6 | public static final Reflector REF = Reflector.on("android.app.Notification"); 7 | 8 | public static Reflector.FieldWrapper mChannelId = REF.field("mChannelId"); 9 | public static Reflector.FieldWrapper mGroupKey = REF.field("mGroupKey"); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/Service.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.app.ActivityThread; 4 | import android.app.Application; 5 | import android.content.Context; 6 | import android.os.IBinder; 7 | 8 | import black.Reflector; 9 | 10 | public class Service { 11 | public static final Reflector REF = Reflector.on("android.app.Service"); 12 | 13 | public static Reflector.MethodWrapper attach = REF.method("attach", Context.class, ActivityThread.class, String.class, IBinder.class, Application.class, Object.class); 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/admin/IDevicePolicyManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.admin; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IDevicePolicyManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.admin.IDevicePolicyManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/job/IJobScheduler.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IJobScheduler { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.job.IJobScheduler$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/job/JobInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.content.ComponentName; 4 | 5 | import black.Reflector; 6 | 7 | public class JobInfo { 8 | public static final Reflector REF = Reflector.on("android.app.job.JobInfo"); 9 | 10 | public static Reflector.FieldWrapper service = REF.field("service"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/servertransaction/ClientTransaction.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import black.Reflector; 8 | 9 | public class ClientTransaction { 10 | public static final Reflector REF = Reflector.on("android.app.servertransaction.ClientTransaction"); 11 | 12 | public static Reflector.FieldWrapper> mActivityCallbacks = REF.field("mActivityCallbacks"); 13 | public static Reflector.FieldWrapper mActivityToken = REF.field("mActivityToken"); 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/servertransaction/LaunchActivityItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | import android.content.Intent; 4 | import android.content.pm.ActivityInfo; 5 | 6 | import black.Reflector; 7 | 8 | public class LaunchActivityItem { 9 | public static final Reflector REF = Reflector.on("android.app.servertransaction.LaunchActivityItem"); 10 | 11 | public static Reflector.FieldWrapper mInfo = REF.field("mInfo"); 12 | public static Reflector.FieldWrapper mIntent = REF.field("mIntent"); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/app/usage/IStorageStatsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.usage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IStorageStatsManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.app.usage.IStorageStatsManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/bluetooth/IBluetoothManager.java: -------------------------------------------------------------------------------- 1 | package black.android.bluetooth; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IBluetoothManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.bluetooth.IBluetoothManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/AttributionSource.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import black.Reflector; 4 | 5 | public class AttributionSource { 6 | public static final Reflector REF = Reflector.on("android.content.AttributionSource"); 7 | 8 | public static Reflector.FieldWrapper mAttributionSourceState = REF.field("mAttributionSourceState"); 9 | 10 | public static Reflector.MethodWrapper getNext = REF.method("getNext"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/AttributionSourceState.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import black.Reflector; 4 | 5 | public class AttributionSourceState { 6 | public static final Reflector REF = Reflector.on("android.content.AttributionSourceState"); 7 | 8 | public static Reflector.FieldWrapper packageName = REF.field("packageName"); 9 | public static Reflector.FieldWrapper uid = REF.field("uid"); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/ContentProviderClient.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class ContentProviderClient { 8 | public static final Reflector REF = Reflector.on("android.content.ContentProviderClient"); 9 | 10 | public static Reflector.FieldWrapper mContentProvider = REF.field("mContentProvider"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/ContentProviderHolderOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class ContentProviderHolderOreo { 8 | public static final Reflector REF = Reflector.on("android.app.ContentProviderHolder"); 9 | 10 | public static Reflector.FieldWrapper provider = REF.field("provider"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/ContentProviderNative.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ContentProviderNative { 9 | public static final Reflector REF = Reflector.on("android.content.ContentProviderNative"); 10 | 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/ContentResolver.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import black.Reflector; 4 | 5 | public class ContentResolver { 6 | public static final Reflector REF = Reflector.on("android.content.ContentResolver"); 7 | 8 | public static Reflector.FieldWrapper mPackageName = REF.field("mPackageName"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/IContentService.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IContentService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.content.IContentService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/IIntentReceiver.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import black.Reflector; 7 | 8 | public class IIntentReceiver { 9 | public static final Reflector REF = Reflector.on("android.content.IIntentReceiver"); 10 | 11 | public static Reflector.MethodWrapper performReceive = REF.method("performReceive", Intent.class, int.class, String.class, Bundle.class, boolean.class, boolean.class, int.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/IRestrictionsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IRestrictionsManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.content.IRestrictionsManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/ApplicationInfoL.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import black.Reflector; 4 | 5 | public class ApplicationInfoL { 6 | public static final Reflector REF = Reflector.on("android.content.pm.ApplicationInfo"); 7 | 8 | public static Reflector.FieldWrapper primaryCpuAbi = REF.field("primaryCpuAbi"); 9 | public static Reflector.FieldWrapper scanPublicSourceDir = REF.field("scanPublicSourceDir"); 10 | public static Reflector.FieldWrapper scanSourceDir = REF.field("scanSourceDir"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/ApplicationInfoN.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import black.Reflector; 4 | 5 | public class ApplicationInfoN { 6 | public static final Reflector REF = Reflector.on("android.content.pm.ApplicationInfo"); 7 | 8 | public static Reflector.FieldWrapper credentialEncryptedDataDir = REF.field("credentialEncryptedDataDir"); 9 | public static Reflector.FieldWrapper credentialProtectedDataDir = REF.field("credentialProtectedDataDir"); 10 | public static Reflector.FieldWrapper deviceProtectedDataDir = REF.field("deviceProtectedDataDir"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/ILauncherApps.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ILauncherApps { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.content.pm.ILauncherApps$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/IShortcutService.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IShortcutService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.content.pm.IShortcutService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParser.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | import android.content.pm.Signature; 5 | import android.util.DisplayMetrics; 6 | 7 | import java.io.File; 8 | 9 | import black.Reflector; 10 | 11 | public class PackageParser { 12 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 13 | 14 | public static Reflector.MethodWrapper collectCertificates = REF.method("collectCertificates", android.content.pm.PackageParser.Package.class, int.class); 15 | public static Reflector.MethodWrapper parsePackage = REF.method("parsePackage", File.class, String.class, DisplayMetrics.class, int.class); 16 | 17 | public static class Package { 18 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser$Package"); 19 | 20 | public static Reflector.FieldWrapper applicationInfo = REF.field("applicationInfo"); 21 | } 22 | 23 | public static class SigningDetails { 24 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser$SigningDetails"); 25 | 26 | public static Reflector.FieldWrapper signatures = REF.field("signatures"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParserLollipop.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser; 4 | import android.content.pm.PackageParser.Package; 5 | 6 | import java.io.File; 7 | 8 | import black.Reflector; 9 | 10 | public class PackageParserLollipop { 11 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 12 | 13 | public static Reflector.ConstructorWrapper _new = REF.constructor(); 14 | 15 | public static Reflector.MethodWrapper collectCertificates = REF.method("collectCertificates", Package.class, int.class); 16 | public static Reflector.MethodWrapper parsePackage = REF.method("parsePackage", File.class, int.class); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParserLollipop22.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser; 4 | import android.content.pm.PackageParser.Package; 5 | 6 | import java.io.File; 7 | 8 | import black.Reflector; 9 | 10 | public class PackageParserLollipop22 { 11 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 12 | 13 | public static Reflector.ConstructorWrapper _new = REF.constructor(); 14 | 15 | public static Reflector.MethodWrapper collectCertificates = REF.method("collectCertificates", Package.class, int.class); 16 | public static Reflector.MethodWrapper parsePackage = REF.method("parsePackage", File.class, int.class); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParserMarshmallow.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser; 4 | import android.content.pm.PackageParser.Package; 5 | 6 | import java.io.File; 7 | 8 | import black.Reflector; 9 | 10 | public class PackageParserMarshmallow { 11 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 12 | 13 | public static Reflector.ConstructorWrapper _new = REF.constructor(); 14 | 15 | public static Reflector.MethodWrapper collectCertificates = REF.method("collectCertificates", Package.class, int.class); 16 | public static Reflector.MethodWrapper parsePackage = REF.method("parsePackage", File.class, int.class); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParserNougat.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser; 4 | 5 | import black.Reflector; 6 | 7 | public class PackageParserNougat { 8 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 9 | 10 | public static Reflector.StaticMethodWrapper collectCertificates = REF.staticMethod("collectCertificates", PackageParser.Package.class, int.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/PackageParserPie.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser; 4 | 5 | import java.io.File; 6 | 7 | import black.Reflector; 8 | 9 | public class PackageParserPie { 10 | public static final Reflector REF = Reflector.on("android.content.pm.PackageParser"); 11 | 12 | public static Reflector.ConstructorWrapper _new = REF.constructor(); 13 | 14 | public static Reflector.StaticMethodWrapper collectCertificates = REF.staticMethod("collectCertificates", PackageParser.Package.class, boolean.class); 15 | 16 | public static Reflector.MethodWrapper parsePackage = REF.method("parsePackage", File.class, int.class); 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/ParceledListSlice.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import java.util.List; 4 | 5 | import black.Reflector; 6 | 7 | public class ParceledListSlice { 8 | public static final Reflector REF = Reflector.on("android.content.pm.ParceledListSlice"); 9 | 10 | public static Reflector.ConstructorWrapper _new0 = REF.constructor(); 11 | public static Reflector.ConstructorWrapper _new1 = REF.constructor(List.class); 12 | 13 | public static Reflector.MethodWrapper append = REF.method("append", Object.class); 14 | public static Reflector.MethodWrapper> getList = REF.method("getList"); 15 | public static Reflector.MethodWrapper setLastSlice = REF.method("setLastSlice", boolean.class); 16 | } 17 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/SigningInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser.SigningDetails; 4 | 5 | import black.Reflector; 6 | 7 | public class SigningInfo { 8 | public static final Reflector REF = Reflector.on("android.content.pm.SigningInfo"); 9 | 10 | public static Reflector.ConstructorWrapper _new = REF.constructor(SigningDetails.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/pm/UserInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import black.Reflector; 4 | 5 | public class UserInfo { 6 | public static final Reflector REF = Reflector.on("android.content.pm.UserInfo"); 7 | 8 | public static Reflector.ConstructorWrapper _new = REF.constructor(int.class, String.class, int.class); 9 | 10 | public static Reflector.FieldWrapper FLAG_PRIMARY = REF.field("FLAG_PRIMARY"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/content/res/AssetManager.java: -------------------------------------------------------------------------------- 1 | package black.android.content.res; 2 | 3 | import black.Reflector; 4 | 5 | public class AssetManager { 6 | public static final Reflector REF = Reflector.on("android.content.res.AssetManager"); 7 | 8 | public static Reflector.ConstructorWrapper _new = REF.constructor(); 9 | 10 | public static Reflector.MethodWrapper addAssetPath = REF.method("addAssetPath", String.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/ddm/DdmHandleAppName.java: -------------------------------------------------------------------------------- 1 | package black.android.ddm; 2 | 3 | import black.Reflector; 4 | 5 | public class DdmHandleAppName { 6 | public static final Reflector REF = Reflector.on("android.ddm.DdmHandleAppName"); 7 | 8 | public static Reflector.StaticMethodWrapper setAppName = REF.staticMethod("setAppName", String.class, int.class); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/graphics/Compatibility.java: -------------------------------------------------------------------------------- 1 | package black.android.graphics; 2 | 3 | import black.Reflector; 4 | 5 | public class Compatibility { 6 | public static final Reflector REF = Reflector.on("android.graphics.Compatibility"); 7 | 8 | public static Reflector.StaticMethodWrapper setTargetSdkVersion = REF.staticMethod("setTargetSdkVersion", int.class); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/hardware/display/DisplayManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package black.android.hardware.display; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class DisplayManagerGlobal { 8 | public static final Reflector REF = Reflector.on("android.hardware.display.DisplayManagerGlobal"); 9 | 10 | public static Reflector.FieldWrapper mDm = REF.field("mDm"); 11 | 12 | public static Reflector.StaticMethodWrapper getInstance = REF.staticMethod("getInstance"); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/hardware/location/IContextHubService.java: -------------------------------------------------------------------------------- 1 | package black.android.hardware.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IContextHubService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.hardware.location.IContextHubService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/location/ILocationListener.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import android.location.Location; 4 | import android.os.IBinder; 5 | import android.os.IInterface; 6 | 7 | import black.Reflector; 8 | 9 | public class ILocationListener { 10 | public static final Reflector REF = Reflector.on("android.location.ILocationListener"); 11 | 12 | public static Reflector.MethodWrapper onLocationChanged = REF.method("onLocationChanged", Location.class); 13 | 14 | public static class Stub { 15 | public static final Reflector REF = Reflector.on("android.location.ILocationListener$Stub"); 16 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/location/ILocationManager.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ILocationManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.location.ILocationManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/location/LocationManager.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import black.Reflector; 4 | 5 | public class LocationManager { 6 | public static class GnssStatusListenerTransport { 7 | public static final Reflector REF = Reflector.on("android.location.LocationManager$GnssStatusListenerTransport"); 8 | 9 | public static Reflector.MethodWrapper onGnssStarted = REF.method("onGnssStarted"); 10 | public static Reflector.MethodWrapper onNmeaReceived = REF.method("onNmeaReceived", long.class, String.class); 11 | } 12 | 13 | public static class GpsStatusListenerTransport { 14 | public static final Reflector REF = Reflector.on("android.location.LocationManager$GpsStatusListenerTransport"); 15 | 16 | public static Reflector.MethodWrapper onNmeaReceived = REF.method("onNmeaReceived", long.class, String.class); 17 | } 18 | 19 | public static class LocationListenerTransport { 20 | public static final Reflector REF = Reflector.on("android.location.LocationManager$LocationListenerTransport"); 21 | 22 | public static Reflector.FieldWrapper mListener = REF.field("mListener"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/location/provider/ProviderProperties.java: -------------------------------------------------------------------------------- 1 | package black.android.location.provider; 2 | 3 | import black.Reflector; 4 | 5 | public class ProviderProperties { 6 | public static final Reflector REF = Reflector.on("android.location.provider.ProviderProperties"); 7 | 8 | public static Reflector.FieldWrapper mHasNetworkRequirement = REF.field("mHasNetworkRequirement"); 9 | public static Reflector.FieldWrapper mHasCellRequirement = REF.field("mHasCellRequirement"); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/media/IMediaRouterService.java: -------------------------------------------------------------------------------- 1 | package black.android.media; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IMediaRouterService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.media.IMediaRouterService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/media/session/ISessionManager.java: -------------------------------------------------------------------------------- 1 | package black.android.media.session; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ISessionManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.media.session.ISessionManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/net/IConnectivityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IConnectivityManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.net.IConnectivityManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/net/IVpnManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IVpnManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.net.IVpnManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/net/wifi/IWifiManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IWifiManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.net.wifi.IWifiManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/net/wifi/WifiInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | import black.Reflector; 4 | 5 | public class WifiInfo { 6 | public static final Reflector REF = Reflector.on("android.net.wifi.WifiInfo"); 7 | 8 | public static Reflector.FieldWrapper mBSSID = REF.field("mBSSID"); 9 | public static Reflector.FieldWrapper mMacAddress = REF.field("mMacAddress"); 10 | public static Reflector.FieldWrapper mWifiSsid = REF.field("mWifiSsid"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/net/wifi/WifiSsid.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | import black.Reflector; 4 | 5 | public class WifiSsid { 6 | public static final Reflector REF = Reflector.on("android.net.wifi.WifiSsid"); 7 | 8 | public static Reflector.StaticMethodWrapper createFromAsciiEncoded = REF.staticMethod("createFromAsciiEncoded", String.class); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/Build.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import black.Reflector; 4 | 5 | public class Build { 6 | public static final Reflector REF = Reflector.on("android.os.Build"); 7 | 8 | public static Reflector.FieldWrapper BOARD = REF.field("BOARD"); 9 | public static Reflector.FieldWrapper BRAND = REF.field("BRAND"); 10 | public static Reflector.FieldWrapper DEVICE = REF.field("DEVICE"); 11 | public static Reflector.FieldWrapper DISPLAY = REF.field("DISPLAY"); 12 | public static Reflector.FieldWrapper HOST = REF.field("HOST"); 13 | public static Reflector.FieldWrapper ID = REF.field("ID"); 14 | public static Reflector.FieldWrapper MANUFACTURER = REF.field("MANUFACTURER"); 15 | public static Reflector.FieldWrapper MODEL = REF.field("MODEL"); 16 | public static Reflector.FieldWrapper PRODUCT = REF.field("PRODUCT"); 17 | public static Reflector.FieldWrapper TAGS = REF.field("TAGS"); 18 | public static Reflector.FieldWrapper TYPE = REF.field("TYPE"); 19 | public static Reflector.FieldWrapper USER = REF.field("USER"); 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/Bundle.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | 5 | import black.Reflector; 6 | 7 | public class Bundle { 8 | public static final Reflector REF = Reflector.on("android.os.Bundle"); 9 | 10 | public static Reflector.MethodWrapper getIBinder = REF.method("getIBinder", String.class); 11 | public static Reflector.MethodWrapper putIBinder = REF.method("putIBinder", String.class, IBinder.class); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/Handler.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.Handler.Callback; 4 | 5 | import black.Reflector; 6 | 7 | public class Handler { 8 | public static final Reflector REF = Reflector.on("android.os.Handler"); 9 | 10 | public static Reflector.FieldWrapper mCallback = REF.field("mCallback"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/IDeviceIdentifiersPolicyService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IDeviceIdentifiersPolicyService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.IDeviceIdentifiersPolicyService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/INetworkManagementService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class INetworkManagementService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.INetworkManagementService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/IPowerManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IPowerManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.IPowerManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/IUserManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IUserManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.IUserManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/IVibratorManagerService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IVibratorManagerService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.IVibratorManagerService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/Process.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import black.Reflector; 4 | 5 | public class Process { 6 | public static final Reflector REF = Reflector.on("android.os.Process"); 7 | 8 | public static Reflector.StaticMethodWrapper setArgV0 = REF.staticMethod("setArgV0", String.class); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/ServiceManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.Map; 6 | 7 | import black.Reflector; 8 | 9 | public class ServiceManager { 10 | public static final Reflector REF = Reflector.on("android.os.ServiceManager"); 11 | 12 | public static Reflector.FieldWrapper> sCache = REF.field("sCache"); 13 | 14 | public static Reflector.StaticMethodWrapper getService = REF.staticMethod("getService", String.class); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/StrictMode.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import black.Reflector; 4 | 5 | public class StrictMode { 6 | public static final Reflector REF = Reflector.on("android.os.StrictMode"); 7 | 8 | public static Reflector.FieldWrapper DETECT_VM_FILE_URI_EXPOSURE = REF.field("DETECT_VM_FILE_URI_EXPOSURE"); 9 | public static Reflector.FieldWrapper PENALTY_DEATH_ON_FILE_URI_EXPOSURE = REF.field("PENALTY_DEATH_ON_FILE_URI_EXPOSURE"); 10 | public static Reflector.FieldWrapper sVmPolicyMask = REF.field("sVmPolicyMask"); 11 | 12 | public static Reflector.StaticMethodWrapper disableDeathOnFileUriExposure = REF.staticMethod("disableDeathOnFileUriExposure"); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/SystemProperties.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import black.Reflector; 4 | 5 | public class SystemProperties { 6 | public static final Reflector REF = Reflector.on("android.os.SystemProperties"); 7 | 8 | public static Reflector.StaticMethodWrapper get0 = REF.staticMethod("get", String.class, String.class); 9 | public static Reflector.StaticMethodWrapper get1 = REF.staticMethod("get", String.class); 10 | public static Reflector.StaticMethodWrapper getInt = REF.staticMethod("getInt", String.class, int.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/UserHandle.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import black.Reflector; 4 | 5 | public class UserHandle { 6 | public static final Reflector REF = Reflector.on("android.os.UserHandle"); 7 | 8 | public static Reflector.StaticMethodWrapper myUserId = REF.staticMethod("myUserId"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/mount/IMountService.java: -------------------------------------------------------------------------------- 1 | package black.android.os.mount; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IMountService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.storage.IMountService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/storage/IStorageManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IStorageManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.storage.IStorageManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/storage/StorageManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import android.os.storage.StorageVolume; 4 | 5 | import black.Reflector; 6 | 7 | public class StorageManager { 8 | public static final Reflector REF = Reflector.on("android.os.storage.StorageManager"); 9 | 10 | public static Reflector.StaticMethodWrapper getVolumeList = REF.staticMethod("getVolumeList", int.class, int.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/os/storage/StorageVolume.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import java.io.File; 4 | 5 | import black.Reflector; 6 | 7 | public class StorageVolume { 8 | public static final Reflector REF = Reflector.on("android.os.storage.StorageVolume"); 9 | 10 | public static Reflector.FieldWrapper mInternalPath = REF.field("mInternalPath"); 11 | public static Reflector.FieldWrapper mPath = REF.field("mPath"); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/permission/IPermissionManager.java: -------------------------------------------------------------------------------- 1 | package black.android.permission; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IPermissionManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.permission.IPermissionManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/role/IRoleManager.java: -------------------------------------------------------------------------------- 1 | package black.android.role; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 19:48 12 | **/ 13 | public class IRoleManager { 14 | public static final Reflector TYPE = Reflector.on("android.app.role.IRoleManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("android.app.role.IRoleManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/security/net/config/NetworkSecurityConfigProvider.java: -------------------------------------------------------------------------------- 1 | package black.android.security.net.config; 2 | 3 | import android.content.Context; 4 | 5 | import black.Reflector; 6 | 7 | public class NetworkSecurityConfigProvider { 8 | public static final Reflector REF = Reflector.on("android.security.net.config.NetworkSecurityConfigProvider"); 9 | 10 | public static Reflector.StaticMethodWrapper install = REF.staticMethod("install", Context.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/service/persistentdata/IPersistentDataBlockService.java: -------------------------------------------------------------------------------- 1 | package black.android.service.persistentdata; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IPersistentDataBlockService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.service.persistentdata.IPersistentDataBlockService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/telephony/TelephonyManager.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class TelephonyManager { 8 | public static final Reflector REF = Reflector.on("android.telephony.TelephonyManager"); 9 | 10 | public static Reflector.StaticMethodWrapper getSubscriberInfoService = REF.staticMethod("getSubscriberInfoService"); 11 | 12 | public static Reflector.FieldWrapper sServiceHandleCacheEnabled = REF.field("sServiceHandleCacheEnabled"); 13 | public static Reflector.FieldWrapper sIPhoneSubInfo = REF.field("sIPhoneSubInfo"); 14 | 15 | public static Reflector.MethodWrapper getSubscriberInfo = REF.method("getSubscriberInfo"); 16 | } 17 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/util/Singleton.java: -------------------------------------------------------------------------------- 1 | package black.android.util; 2 | 3 | import black.Reflector; 4 | 5 | public class Singleton { 6 | public static final Reflector REF = Reflector.on("android.util.Singleton"); 7 | 8 | public static Reflector.FieldWrapper mInstance = REF.field("mInstance"); 9 | 10 | public static Reflector.MethodWrapper get = REF.method("get"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/view/IAutoFillManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAutoFillManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.view.autofill.IAutoFillManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/view/IGraphicsStats.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IGraphicsStats { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.view.IGraphicsStats$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/view/IWindowManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IWindowManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.view.IWindowManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/view/WindowManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import black.Reflector; 6 | 7 | public class WindowManagerGlobal { 8 | public static final Reflector REF = Reflector.on("android.view.WindowManagerGlobal"); 9 | 10 | public static Reflector.FieldWrapper sWindowManagerService = REF.field("sWindowManagerService"); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/android/view/accessibility/IAccessibilityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view.accessibility; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAccessibilityManager { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.view.accessibility.IAccessibilityManager$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/app/IAppOpsService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAppOpsService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("com.android.internal.app.IAppOpsService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/appwidget/IAppWidgetService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.appwidget; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IAppWidgetService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("com.android.internal.appwidget.IAppWidgetService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/content/ReferrerIntent.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.content; 2 | 3 | import android.content.Intent; 4 | 5 | import black.Reflector; 6 | 7 | public class ReferrerIntent { 8 | public static final Reflector REF = Reflector.on("com.android.internal.content.ReferrerIntent"); 9 | 10 | public static Reflector.ConstructorWrapper _new = REF.constructor(Intent.class, String.class); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/infra/AndroidFuture.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.infra; 2 | 3 | import android.content.Context; 4 | 5 | import black.Reflector; 6 | 7 | /** 8 | * @author Findger 9 | * @function 10 | * @date :2023/10/13 18:56 11 | **/ 12 | public class AndroidFuture { 13 | public static final Reflector REF = Reflector.on("com.android.internal.infra.AndroidFuture"); 14 | public static Reflector.MethodWrapper complete = REF.method("complete", Object.class); 15 | public static Reflector.ConstructorWrapper ctor = REF.constructor(); 16 | } 17 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/net/VpnConfig.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.net; 2 | 3 | import java.util.List; 4 | 5 | import black.Reflector; 6 | 7 | public class VpnConfig { 8 | public static final Reflector REF = Reflector.on("com.android.internal.net.VpnConfig"); 9 | 10 | public static Reflector.FieldWrapper user = REF.field("user"); 11 | public static Reflector.FieldWrapper> disallowedApplications = REF.field("disallowedApplications"); 12 | public static Reflector.FieldWrapper> allowedApplications = REF.field("allowedApplications"); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/os/IVibratorService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class IVibratorService { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("android.os.IVibratorService$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/telephony/ISub.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ISub { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("com.android.internal.telephony.ISub$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/telephony/ITelephony.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ITelephony { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("com.android.internal.telephony.ITelephony$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/com/android/internal/telephony/ITelephonyRegistry.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | public class ITelephonyRegistry { 9 | public static class Stub { 10 | public static final Reflector REF = Reflector.on("com.android.internal.telephony.ITelephonyRegistry$Stub"); 11 | public static Reflector.StaticMethodWrapper asInterface = REF.staticMethod("asInterface", IBinder.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/dalvik/system/VMRuntime.java: -------------------------------------------------------------------------------- 1 | package black.dalvik.system; 2 | 3 | import black.Reflector; 4 | 5 | public class VMRuntime { 6 | public static final Reflector REF = Reflector.on("dalvik.system.VMRuntime"); 7 | 8 | public static Reflector.StaticMethodWrapper getRuntime = REF.staticMethod("getRuntime"); 9 | public static Reflector.MethodWrapper setTargetSdkVersion = REF.method("setTargetSdkVersion", int.class); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/libcore/io/Libcore.java: -------------------------------------------------------------------------------- 1 | package black.libcore.io; 2 | 3 | import black.Reflector; 4 | 5 | public class Libcore { 6 | public static final Reflector REF = Reflector.on("libcore.io.Libcore"); 7 | 8 | public static Reflector.FieldWrapper os = REF.field("os"); 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/flyme/IFlymePermissionService.java: -------------------------------------------------------------------------------- 1 | package black.oem.flyme; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/9 12:33 12 | **/ 13 | public class IFlymePermissionService { 14 | public static final Reflector TYPE = Reflector.on("meizu.security.IFlymePermissionService"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("meizu.security.IFlymePermissionService$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/vivo/IPhysicalFlingManager.java: -------------------------------------------------------------------------------- 1 | package black.oem.vivo; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 20:12 12 | **/ 13 | public class IPhysicalFlingManager { 14 | public static final Reflector TYPE = Reflector.on("vivo.app.physicalfling.IPhysicalFlingManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("vivo.app.physicalfling.IPhysicalFlingManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/vivo/IPopupCameraManager.java: -------------------------------------------------------------------------------- 1 | package black.oem.vivo; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 20:21 12 | **/ 13 | public class IPopupCameraManager { 14 | public static final Reflector TYPE = Reflector.on("vivo.app.popupcamera.IPopupCameraManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("vivo.app.popupcamera.IPopupCameraManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/vivo/ISuperResolutionManager.java: -------------------------------------------------------------------------------- 1 | package black.oem.vivo; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 20:27 12 | **/ 13 | public class ISuperResolutionManager { 14 | public static final Reflector TYPE = Reflector.on("vivo.app.superresolution.ISuperResolutionManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("vivo.app.superresolution.ISuperResolutionManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/vivo/ISystemDefenceManager.java: -------------------------------------------------------------------------------- 1 | package black.oem.vivo; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 20:32 12 | **/ 13 | public class ISystemDefenceManager { 14 | public static final Reflector TYPE = Reflector.on("vivo.app.systemdefence.ISystemDefenceManager"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("vivo.app.systemdefence.ISystemDefenceManager$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/black/oem/vivo/IVivoPermissonService.java: -------------------------------------------------------------------------------- 1 | package black.oem.vivo; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.Reflector; 7 | 8 | /** 9 | * @author Findger 10 | * @function 11 | * @date :2023/10/8 20:37 12 | **/ 13 | public class IVivoPermissonService { 14 | public static final Reflector TYPE = Reflector.on("vivo.app.security.IVivoPermissionService"); 15 | 16 | public static class Stub { 17 | public static final Reflector TYPE = Reflector.on("vivo.app.security.IVivoPermissionService$Stub"); 18 | public static Reflector.StaticMethodWrapper asInterface = TYPE.staticMethod("asInterface", IBinder.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/app/configuration/ClientConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.vcore.app.configuration; 2 | 3 | import java.io.File; 4 | 5 | public abstract class ClientConfiguration { 6 | public boolean isHideRoot() { 7 | return false; 8 | } 9 | 10 | public boolean isHideXposed() { 11 | return false; 12 | } 13 | 14 | public abstract String getHostPackageName(); 15 | 16 | public boolean isEnableDaemonService() { 17 | return true; 18 | } 19 | 20 | public boolean isEnableLauncherActivity() { 21 | return true; 22 | } 23 | 24 | /** 25 | * This method is called when an internal application requests to install a new application. 26 | * 27 | * @return Is it handled? 28 | */ 29 | public boolean requestInstallPackage(File file, int userId) { 30 | return false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/CrashHandler.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.vcore.BlackBoxCore; 6 | 7 | public class CrashHandler implements Thread.UncaughtExceptionHandler { 8 | private final Thread.UncaughtExceptionHandler mDefaultHandler; 9 | 10 | public static void create() { 11 | new CrashHandler(); 12 | } 13 | 14 | public CrashHandler() { 15 | mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); 16 | Thread.setDefaultUncaughtExceptionHandler(this); 17 | } 18 | 19 | @Override 20 | public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) { 21 | if (BlackBoxCore.get().getExceptionHandler() != null) { 22 | BlackBoxCore.get().getExceptionHandler().uncaughtException(t, e); 23 | } 24 | mDefaultHandler.uncaughtException(t, e); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/env/VirtualRuntime.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.env; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import black.android.ddm.DdmHandleAppName; 6 | import black.android.os.Process; 7 | 8 | public class VirtualRuntime { 9 | private static String sInitialPackageName; 10 | private static String sProcessName; 11 | 12 | public static String getProcessName() { 13 | return sProcessName; 14 | } 15 | 16 | public static String getInitialPackageName() { 17 | return sInitialPackageName; 18 | } 19 | 20 | public static void setupRuntime(String processName, ApplicationInfo appInfo) { 21 | if (sProcessName != null) { 22 | return; 23 | } 24 | 25 | sInitialPackageName = appInfo.packageName; 26 | sProcessName = processName; 27 | Process.setArgV0.call(processName); 28 | DdmHandleAppName.setAppName.call(processName, 0); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/ISystemService.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system; 2 | 3 | public interface ISystemService { 4 | void systemReady(); 5 | } 6 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/accounts/RegisteredServicesParser.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.accounts; 2 | 3 | import android.content.Context; 4 | import android.content.pm.ApplicationInfo; 5 | import android.content.pm.ServiceInfo; 6 | import android.content.res.Resources; 7 | import android.content.res.XmlResourceParser; 8 | import android.os.Bundle; 9 | 10 | import com.vcore.core.system.pm.PackageManagerCompat; 11 | 12 | public class RegisteredServicesParser { 13 | public XmlResourceParser getParser(Context context, ServiceInfo serviceInfo, String name) { 14 | Bundle meta = serviceInfo.metaData; 15 | if (meta != null) { 16 | int xmlId = meta.getInt(name); 17 | if (xmlId != 0) { 18 | try { 19 | Resources resources = getResources(context, serviceInfo.applicationInfo); 20 | if (resources == null) { 21 | return null; 22 | } 23 | return resources.getXml(xmlId); 24 | } catch (Exception e) { 25 | e.printStackTrace(); 26 | } 27 | } 28 | } 29 | return null; 30 | } 31 | 32 | public Resources getResources(Context context, ApplicationInfo appInfo) { 33 | return PackageManagerCompat.getResources(context, appInfo); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/am/ActivityRecord.kt: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.am 2 | 3 | import android.content.ComponentName 4 | import android.content.Intent 5 | import android.content.pm.ActivityInfo 6 | import android.os.Binder 7 | import android.os.IBinder 8 | import com.vcore.core.system.ProcessRecord 9 | import java.util.UUID 10 | 11 | class ActivityRecord : Binder() { 12 | @JvmField 13 | var task: TaskRecord? = null 14 | @JvmField 15 | var token: IBinder? = null 16 | @JvmField 17 | var resultTo: IBinder? = null 18 | @JvmField 19 | var info: ActivityInfo? = null 20 | @JvmField 21 | var component: ComponentName? = null 22 | @JvmField 23 | var intent: Intent? = null 24 | @JvmField 25 | var userId = 0 26 | @JvmField 27 | var finished = false 28 | @JvmField 29 | var processRecord: ProcessRecord? = null 30 | @JvmField 31 | var mBToken: String? = null 32 | 33 | companion object { 34 | @JvmStatic 35 | fun create(intent: Intent?, info: ActivityInfo, resultTo: IBinder?, userId: Int): ActivityRecord { 36 | val record = ActivityRecord() 37 | record.intent = intent 38 | record.info = info 39 | record.component = ComponentName(info.packageName, info.name) 40 | record.resultTo = resultTo 41 | record.userId = userId 42 | record.mBToken = UUID.randomUUID().toString() 43 | return record 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/am/PendingIntentRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.am; 2 | 3 | import java.util.Objects; 4 | 5 | public class PendingIntentRecord { 6 | public int uid; 7 | public String packageName; 8 | 9 | @Override 10 | public boolean equals(Object o) { 11 | if (o == this) { 12 | return true; 13 | } 14 | 15 | if (!(o instanceof PendingIntentRecord)) { 16 | return false; 17 | } 18 | 19 | PendingIntentRecord that = (PendingIntentRecord) o; 20 | return uid == that.uid && Objects.equals(packageName, that.packageName); 21 | } 22 | 23 | @Override 24 | public int hashCode() { 25 | return Objects.hash(uid, packageName); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/am/TaskRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.am; 2 | 3 | import android.content.Intent; 4 | 5 | import java.util.LinkedList; 6 | import java.util.List; 7 | 8 | 9 | 10 | 11 | public class TaskRecord { 12 | public final int id; 13 | public final int userId; 14 | public final String taskAffinity; 15 | public Intent rootIntent; 16 | public final List activities = new LinkedList<>(); 17 | 18 | public TaskRecord(int id, int userId, String taskAffinity) { 19 | this.id = id; 20 | this.userId = userId; 21 | this.taskAffinity = taskAffinity; 22 | } 23 | 24 | public boolean needNewTask() { 25 | for (ActivityRecord activity : activities) { 26 | if (!activity.finished) { 27 | return false; 28 | } 29 | } 30 | return true; 31 | } 32 | 33 | public void addTopActivity(ActivityRecord record) { 34 | activities.add(record); 35 | } 36 | 37 | public void removeActivity(ActivityRecord record) { 38 | activities.remove(record); 39 | } 40 | 41 | public ActivityRecord getTopActivityRecord() { 42 | for (int i = activities.size() - 1; i >= 0; i--) { 43 | ActivityRecord activityRecord = activities.get(i); 44 | if (!activityRecord.finished) { 45 | return activityRecord; 46 | } 47 | } 48 | return null; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/am/UserSpace.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.am; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | public class UserSpace { 9 | // 单实例 10 | public final ActiveServices mActiveServices = new ActiveServices(); 11 | // 单实例 12 | public final ActivityStack mStack = new ActivityStack(); 13 | public final Map mIntentSenderRecords = new HashMap<>(); 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/location/LocationRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.location; 2 | 3 | public class LocationRecord { 4 | public final String packageName; 5 | public final int userId; 6 | 7 | public LocationRecord(String packageName, int userId) { 8 | this.packageName = packageName; 9 | this.userId = userId; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/notification/NotificationRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.notification; 2 | 3 | import android.app.NotificationChannel; 4 | import android.app.NotificationChannelGroup; 5 | 6 | import java.util.HashMap; 7 | import java.util.HashSet; 8 | import java.util.Map; 9 | import java.util.Set; 10 | 11 | public class NotificationRecord { 12 | public final Map mNotificationChannels = new HashMap<>(); 13 | public final Map mNotificationChannelGroups = new HashMap<>(); 14 | public final Set mIds = new HashSet<>(); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/PackageMonitor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm; 2 | 3 | public interface PackageMonitor { 4 | void onPackageUninstalled(String packageName, boolean isRemove, int userId); 5 | 6 | void onPackageInstalled(String packageName, int userId); 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/installer/CreatePackageExecutor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm.installer; 2 | 3 | import com.vcore.core.env.BEnvironment; 4 | import com.vcore.core.system.pm.BPackageSettings; 5 | import com.vcore.entity.pm.InstallOption; 6 | import com.vcore.utils.FileUtils; 7 | 8 | public class CreatePackageExecutor implements Executor { 9 | 10 | @Override 11 | public int exec(BPackageSettings ps, InstallOption option, int userId) { 12 | FileUtils.deleteDir(BEnvironment.getAppDir(ps.pkg.packageName)); 13 | FileUtils.mkdirs(BEnvironment.getAppDir(ps.pkg.packageName)); 14 | FileUtils.mkdirs(BEnvironment.getAppLibDir(ps.pkg.packageName)); 15 | return 0; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/installer/CreateUserExecutor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm.installer; 2 | 3 | import com.vcore.core.env.BEnvironment; 4 | import com.vcore.core.system.pm.BPackageSettings; 5 | import com.vcore.entity.pm.InstallOption; 6 | import com.vcore.utils.FileUtils; 7 | 8 | public class CreateUserExecutor implements Executor { 9 | 10 | @Override 11 | public int exec(BPackageSettings ps, InstallOption option, int userId) { 12 | String packageName = ps.pkg.packageName; 13 | FileUtils.deleteDir(BEnvironment.getDataLibDir(packageName, userId)); 14 | 15 | FileUtils.mkdirs(BEnvironment.getDataDir(packageName, userId)); 16 | FileUtils.mkdirs(BEnvironment.getDataCacheDir(packageName, userId)); 17 | FileUtils.mkdirs(BEnvironment.getDataFilesDir(packageName, userId)); 18 | FileUtils.mkdirs(BEnvironment.getDataDatabasesDir(packageName, userId)); 19 | FileUtils.mkdirs(BEnvironment.getDeDataDir(packageName, userId)); 20 | return 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/installer/Executor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm.installer; 2 | 3 | import com.vcore.core.system.pm.BPackageSettings; 4 | import com.vcore.entity.pm.InstallOption; 5 | 6 | public interface Executor { 7 | String TAG = "InstallExecutor"; 8 | 9 | int exec(BPackageSettings ps, InstallOption option, int userId); 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/installer/RemoveAppExecutor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm.installer; 2 | 3 | import com.vcore.core.env.BEnvironment; 4 | import com.vcore.core.system.pm.BPackageSettings; 5 | import com.vcore.entity.pm.InstallOption; 6 | import com.vcore.utils.FileUtils; 7 | 8 | public class RemoveAppExecutor implements Executor { 9 | @Override 10 | public int exec(BPackageSettings ps, InstallOption option, int userId) { 11 | FileUtils.deleteDir(BEnvironment.getAppDir(ps.pkg.packageName)); 12 | return 0; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/pm/installer/RemoveUserExecutor.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.pm.installer; 2 | 3 | import com.vcore.core.env.BEnvironment; 4 | import com.vcore.core.system.pm.BPackageSettings; 5 | import com.vcore.entity.pm.InstallOption; 6 | import com.vcore.utils.FileUtils; 7 | 8 | public class RemoveUserExecutor implements Executor { 9 | 10 | @Override 11 | public int exec(BPackageSettings ps, InstallOption option, int userId) { 12 | String packageName = ps.pkg.packageName; 13 | 14 | FileUtils.deleteDir(BEnvironment.getDataDir(packageName, userId)); 15 | FileUtils.deleteDir(BEnvironment.getDeDataDir(packageName, userId)); 16 | FileUtils.deleteDir(BEnvironment.getExternalDataDir(packageName, userId)); 17 | return 0; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/core/system/user/BUserStatus.java: -------------------------------------------------------------------------------- 1 | package com.vcore.core.system.user; 2 | 3 | public enum BUserStatus { 4 | ENABLE, DISABLE 5 | 6 | } 7 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/entity/JobRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.entity; 2 | 3 | import android.app.job.JobInfo; 4 | import android.app.job.JobService; 5 | import android.content.pm.ServiceInfo; 6 | import android.os.Parcel; 7 | import android.os.Parcelable; 8 | 9 | public class JobRecord implements Parcelable { 10 | public JobInfo mJobInfo; 11 | public ServiceInfo mServiceInfo; 12 | 13 | public JobService mJobService; 14 | 15 | public JobRecord() { } 16 | 17 | @Override 18 | public int describeContents() { 19 | return 0; 20 | } 21 | 22 | @Override 23 | public void writeToParcel(Parcel dest, int flags) { 24 | dest.writeParcelable(this.mJobInfo, flags); 25 | dest.writeParcelable(this.mServiceInfo, flags); 26 | } 27 | 28 | protected JobRecord(Parcel in) { 29 | this.mJobInfo = in.readParcelable(JobInfo.class.getClassLoader()); 30 | this.mServiceInfo = in.readParcelable(ServiceInfo.class.getClassLoader()); 31 | } 32 | 33 | public static final Creator CREATOR = new Creator() { 34 | @Override 35 | public JobRecord createFromParcel(Parcel source) { 36 | return new JobRecord(source); 37 | } 38 | 39 | @Override 40 | public JobRecord[] newArray(int size) { 41 | return new JobRecord[size]; 42 | } 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/entity/am/ReceiverData.java: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | import android.content.Intent; 4 | import android.content.pm.ActivityInfo; 5 | import android.os.Parcel; 6 | import android.os.Parcelable; 7 | 8 | public class ReceiverData implements Parcelable { 9 | public Intent intent; 10 | public ActivityInfo activityInfo; 11 | public PendingResultData data; 12 | 13 | @Override 14 | public int describeContents() { 15 | return 0; 16 | } 17 | 18 | @Override 19 | public void writeToParcel(Parcel dest, int flags) { 20 | dest.writeParcelable(this.intent, flags); 21 | dest.writeParcelable(this.activityInfo, flags); 22 | dest.writeParcelable(this.data, flags); 23 | } 24 | 25 | public ReceiverData() { } 26 | 27 | protected ReceiverData(Parcel in) { 28 | this.intent = in.readParcelable(Intent.class.getClassLoader()); 29 | this.activityInfo = in.readParcelable(ActivityInfo.class.getClassLoader()); 30 | this.data = in.readParcelable(PendingResultData.class.getClassLoader()); 31 | } 32 | 33 | public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 34 | @Override 35 | public ReceiverData createFromParcel(Parcel source) { 36 | return new ReceiverData(source); 37 | } 38 | 39 | @Override 40 | public ReceiverData[] newArray(int size) { 41 | return new ReceiverData[size]; 42 | } 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/entity/am/RunningAppProcessInfo.java: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | import android.app.ActivityManager; 4 | import android.os.Parcel; 5 | import android.os.Parcelable; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class RunningAppProcessInfo implements Parcelable { 11 | public final List mAppProcessInfoList; 12 | 13 | @Override 14 | public int describeContents() { 15 | return 0; 16 | } 17 | 18 | @Override 19 | public void writeToParcel(Parcel dest, int flags) { 20 | dest.writeTypedList(this.mAppProcessInfoList); 21 | } 22 | 23 | public RunningAppProcessInfo() { 24 | this.mAppProcessInfoList = new ArrayList<>(); 25 | } 26 | 27 | protected RunningAppProcessInfo(Parcel in) { 28 | this.mAppProcessInfoList = in.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 29 | } 30 | 31 | public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 32 | @Override 33 | public RunningAppProcessInfo createFromParcel(Parcel source) { 34 | return new RunningAppProcessInfo(source); 35 | } 36 | 37 | @Override 38 | public RunningAppProcessInfo[] newArray(int size) { 39 | return new RunningAppProcessInfo[size]; 40 | } 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/entity/am/RunningServiceInfo.java: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.am; 2 | 3 | import android.app.ActivityManager; 4 | import android.os.Parcel; 5 | import android.os.Parcelable; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class RunningServiceInfo implements Parcelable { 11 | public final List mRunningServiceInfoList; 12 | 13 | @Override 14 | public int describeContents() { 15 | return 0; 16 | } 17 | 18 | @Override 19 | public void writeToParcel(Parcel dest, int flags) { 20 | dest.writeTypedList(this.mRunningServiceInfoList); 21 | } 22 | 23 | public RunningServiceInfo() { 24 | this.mRunningServiceInfoList = new ArrayList<>(); 25 | } 26 | 27 | protected RunningServiceInfo(Parcel in) { 28 | this.mRunningServiceInfoList = in.createTypedArrayList(ActivityManager.RunningServiceInfo.CREATOR); 29 | } 30 | 31 | public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 32 | @Override 33 | public RunningServiceInfo createFromParcel(Parcel source) { 34 | return new RunningServiceInfo(source); 35 | } 36 | 37 | @Override 38 | public RunningServiceInfo[] newArray(int size) { 39 | return new RunningServiceInfo[size]; 40 | } 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/entity/device/BDeviceConfig.java: -------------------------------------------------------------------------------- 1 | package com.vcore.entity.device; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | public class BDeviceConfig implements Parcelable { 7 | @Override 8 | public int describeContents() { 9 | return 0; 10 | } 11 | 12 | @Override 13 | public void writeToParcel(Parcel dest, int flags) { } 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/frameworks/BStorageManager.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.frameworks; 2 | 3 | import android.net.Uri; 4 | import android.os.RemoteException; 5 | import android.os.storage.StorageVolume; 6 | 7 | import com.vcore.core.system.ServiceManager; 8 | import com.vcore.core.system.os.IBStorageManagerService; 9 | 10 | public class BStorageManager extends BlackManager { 11 | private static final BStorageManager sStorageManager = new BStorageManager(); 12 | 13 | public static BStorageManager get() { 14 | return sStorageManager; 15 | } 16 | 17 | @Override 18 | protected String getServiceName() { 19 | return ServiceManager.STORAGE_MANAGER; 20 | } 21 | 22 | public StorageVolume[] getVolumeList(int uid, String packageName, int flags, int userId) { 23 | try { 24 | return getService().getVolumeList(uid, packageName, flags, userId); 25 | } catch (RemoteException e) { 26 | e.printStackTrace(); 27 | } 28 | return new StorageVolume[]{}; 29 | } 30 | 31 | public Uri getUriForFile(String file) { 32 | try { 33 | return getService().getUriForFile(file); 34 | } catch (RemoteException e) { 35 | e.printStackTrace(); 36 | } 37 | return null; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/frameworks/BUserManager.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.frameworks; 2 | 3 | import android.os.RemoteException; 4 | 5 | import java.util.Collections; 6 | import java.util.List; 7 | 8 | import com.vcore.core.system.ServiceManager; 9 | import com.vcore.core.system.user.BUserInfo; 10 | import com.vcore.core.system.user.IBUserManagerService; 11 | 12 | public class BUserManager extends BlackManager { 13 | private static final BUserManager sUserManager = new BUserManager(); 14 | 15 | public static BUserManager get() { 16 | return sUserManager; 17 | } 18 | 19 | @Override 20 | protected String getServiceName() { 21 | return ServiceManager.USER_MANAGER; 22 | } 23 | 24 | public BUserInfo createUser(int userId) { 25 | try { 26 | return getService().createUser(userId); 27 | } catch (RemoteException e) { 28 | e.printStackTrace(); 29 | } 30 | return null; 31 | } 32 | 33 | public void deleteUser(int userId) { 34 | try { 35 | getService().deleteUser(userId); 36 | } catch (RemoteException e) { 37 | e.printStackTrace(); 38 | } 39 | } 40 | 41 | public List getUsers() { 42 | try { 43 | return getService().getUsers(); 44 | } catch (RemoteException e) { 45 | e.printStackTrace(); 46 | } 47 | return Collections.emptyList(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/hook/IInjectHook.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.hook; 2 | 3 | public interface IInjectHook { 4 | void injectHook(); 5 | 6 | boolean isBadEnv(); 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/hook/MethodHook.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.hook; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.vcore.BlackBoxCore; 6 | 7 | public abstract class MethodHook { 8 | protected String getMethodName() { 9 | return null; 10 | } 11 | 12 | protected Object afterHook(Object result) { 13 | return result; 14 | } 15 | 16 | protected Object beforeHook(Object who, Method method, Object[] args) throws Throwable { 17 | return null; 18 | } 19 | 20 | protected abstract Object hook(Object who, Method method, Object[] args) throws Throwable; 21 | 22 | protected boolean isEnable() { 23 | return BlackBoxCore.get().isBlackProcess(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/hook/ProxyMethod.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ProxyMethod { 11 | String value(); 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/hook/ProxyMethods.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ProxyMethods { 11 | String[] value() default {}; 12 | } 13 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/hook/ScanClass.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ScanClass { 11 | Class[] value() default {}; 12 | } -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/provider/FileProviderHandler.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.provider; 2 | 3 | import android.content.Context; 4 | import android.content.pm.ProviderInfo; 5 | import android.net.Uri; 6 | 7 | import java.io.File; 8 | import java.util.List; 9 | 10 | import com.vcore.BlackBoxCore; 11 | import com.vcore.app.BActivityThread; 12 | import com.vcore.utils.compat.BuildCompat; 13 | 14 | public class FileProviderHandler { 15 | public static Uri convertFileUri(Context context, Uri uri) { 16 | if (BuildCompat.isN()) { 17 | File file = convertFile(context, uri); 18 | if (file == null) { 19 | return null; 20 | } 21 | return BlackBoxCore.getBStorageManager().getUriForFile(file.getAbsolutePath()); 22 | } 23 | return uri; 24 | } 25 | 26 | public static File convertFile(Context context, Uri uri) { 27 | List providers = BActivityThread.getProviders(); 28 | for (ProviderInfo provider : providers) { 29 | try { 30 | File fileForUri = FileProvider.getFileForUri(context, provider.authority, uri); 31 | if (fileForUri != null && fileForUri.exists()) { 32 | return fileForUri; 33 | } 34 | } catch (Exception ignored) { } 35 | } 36 | return null; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/BuildProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import black.android.os.Build; 4 | import com.vcore.fake.hook.ClassInvocationStub; 5 | 6 | public class BuildProxy extends ClassInvocationStub { 7 | 8 | @Override 9 | protected Object getWho() { 10 | return Build.REF; 11 | } 12 | 13 | @Override 14 | protected void inject(Object baseInvocation, Object proxyInvocation) { 15 | Build.BOARD.set("umi"); 16 | Build.BRAND.set("Xiaomi"); 17 | Build.DEVICE.set("umi"); 18 | Build.DISPLAY.set("QKQ1.191117.002 test-keys"); 19 | Build.HOST.set("c5-miui-ota-bd074.bj"); 20 | Build.ID.set("QKQ1.191117.002"); 21 | Build.MANUFACTURER.set("Xiaomi"); 22 | Build.MODEL.set("Mi 10"); 23 | Build.PRODUCT.set("umi"); 24 | Build.TAGS.set("release-keys"); 25 | Build.TYPE.set("user"); 26 | Build.USER.set("builder"); 27 | } 28 | 29 | @Override 30 | public boolean isBadEnv() { 31 | return false; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IBluetoothManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import black.android.bluetooth.IBluetoothManager; 6 | import black.android.os.ServiceManager; 7 | import com.vcore.fake.hook.BinderInvocationStub; 8 | import com.vcore.fake.hook.MethodHook; 9 | import com.vcore.fake.hook.ProxyMethod; 10 | 11 | public class IBluetoothManagerProxy extends BinderInvocationStub { 12 | public static final String TAG = "IBluetoothManagerProxy"; 13 | 14 | public IBluetoothManagerProxy() { 15 | super(ServiceManager.getService.call("bluetooth_manager")); 16 | } 17 | 18 | @Override 19 | protected Object getWho() { 20 | return IBluetoothManager.Stub.asInterface.call(ServiceManager.getService.call("bluetooth_manager")); 21 | } 22 | 23 | @Override 24 | protected void inject(Object baseInvocation, Object proxyInvocation) { 25 | replaceSystemService("bluetooth_manager"); 26 | 27 | } 28 | 29 | @Override 30 | public boolean isBadEnv() { 31 | return false; 32 | } 33 | 34 | @Override 35 | protected void onBindMethod() { 36 | addMethodHook(new GetName()); 37 | } 38 | 39 | @ProxyMethod("getName") 40 | public static class GetName extends MethodHook { 41 | 42 | @Override 43 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 44 | return null; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IConnectivityManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | 5 | import black.android.net.IConnectivityManager; 6 | import black.android.os.ServiceManager; 7 | import com.vcore.fake.hook.BinderInvocationStub; 8 | import com.vcore.fake.service.base.ValueMethodProxy; 9 | 10 | public class IConnectivityManagerProxy extends BinderInvocationStub { 11 | public static final String TAG = "IConnectivityManagerProxy"; 12 | 13 | public IConnectivityManagerProxy() { 14 | super(ServiceManager.getService.call(Context.CONNECTIVITY_SERVICE)); 15 | } 16 | 17 | @Override 18 | protected Object getWho() { 19 | return IConnectivityManager.Stub.asInterface.call(ServiceManager.getService.call(Context.CONNECTIVITY_SERVICE)); 20 | } 21 | 22 | @Override 23 | protected void inject(Object baseInvocation, Object proxyInvocation) { 24 | replaceSystemService(Context.CONNECTIVITY_SERVICE); 25 | } 26 | 27 | @Override 28 | protected void onBindMethod() { 29 | super.onBindMethod(); 30 | addMethodHook(new ValueMethodProxy("getAllNetworkInfo", null)); 31 | addMethodHook(new ValueMethodProxy("getAllNetworks",null)); 32 | } 33 | 34 | @Override 35 | public boolean isBadEnv() { 36 | return false; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IContextHubServiceProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import black.android.hardware.location.IContextHubService; 4 | import black.android.os.ServiceManager; 5 | import com.vcore.fake.hook.BinderInvocationStub; 6 | import com.vcore.fake.service.base.ValueMethodProxy; 7 | import com.vcore.utils.compat.BuildCompat; 8 | 9 | public class IContextHubServiceProxy extends BinderInvocationStub { 10 | public IContextHubServiceProxy() { 11 | super(ServiceManager.getService.call(getServiceName())); 12 | } 13 | 14 | private static String getServiceName() { 15 | return BuildCompat.isOreo() ? "contexthub" : "contexthub_service"; 16 | } 17 | 18 | @Override 19 | protected Object getWho() { 20 | return IContextHubService.Stub.asInterface.call(ServiceManager.getService.call(getServiceName())); 21 | } 22 | 23 | @Override 24 | protected void inject(Object baseInvocation, Object proxyInvocation) { 25 | replaceSystemService(getServiceName()); 26 | } 27 | 28 | @Override 29 | protected void onBindMethod() { 30 | super.onBindMethod(); 31 | addMethodHook(new ValueMethodProxy("registerCallback", 0)); 32 | addMethodHook(new ValueMethodProxy("getContextHubInfo", null)); 33 | addMethodHook(new ValueMethodProxy("getContextHubHandles",new int[]{})); 34 | } 35 | 36 | @Override 37 | public boolean isBadEnv() { 38 | return false; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IFlymePermissionServiceProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.os.IBinder; 4 | 5 | import black.android.os.ServiceManager; 6 | import black.oem.flyme.IFlymePermissionService; 7 | import com.vcore.fake.hook.BinderInvocationStub; 8 | import com.vcore.fake.service.base.PkgMethodProxy; 9 | 10 | /** 11 | * @author Findger 12 | * @function 13 | * @date :2023/10/9 12:34 14 | **/ 15 | public class IFlymePermissionServiceProxy extends BinderInvocationStub { 16 | public IFlymePermissionServiceProxy() { 17 | super(ServiceManager.getService.call("flyme_permission")); 18 | } 19 | 20 | @Override 21 | protected Object getWho() { 22 | return IFlymePermissionService.Stub.TYPE; 23 | } 24 | 25 | @Override 26 | protected void inject(Object baseInvocation, Object proxyInvocation) { 27 | addMethodHook(new PkgMethodProxy("noteIntentOperation")); 28 | } 29 | 30 | @Override 31 | public boolean isBadEnv() { 32 | return false; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IGraphicsStatsProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import black.android.os.ServiceManager; 6 | import black.android.view.IGraphicsStats; 7 | import com.vcore.fake.hook.BinderInvocationStub; 8 | import com.vcore.fake.hook.MethodHook; 9 | import com.vcore.fake.hook.ProxyMethod; 10 | import com.vcore.utils.MethodParameterUtils; 11 | 12 | public class IGraphicsStatsProxy extends BinderInvocationStub { 13 | public IGraphicsStatsProxy() { 14 | super(ServiceManager.getService.call("graphicsstats")); 15 | } 16 | 17 | @Override 18 | protected Object getWho() { 19 | return IGraphicsStats.Stub.asInterface.call(ServiceManager.getService.call("graphicsstats")); 20 | } 21 | 22 | @Override 23 | protected void inject(Object baseInvocation, Object proxyInvocation) { 24 | replaceSystemService("graphicsstats"); 25 | 26 | } 27 | 28 | @Override 29 | public boolean isBadEnv() { 30 | return false; 31 | } 32 | 33 | 34 | @ProxyMethod("requestBufferForProcess") 35 | public static class RequestBufferForProcess extends MethodHook { 36 | 37 | @Override 38 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 39 | MethodParameterUtils.replaceFirstAppPkg(args); 40 | return method.invoke(who, args); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/ILauncherAppsProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | import black.android.content.pm.ILauncherApps; 8 | import black.android.os.ServiceManager; 9 | import com.vcore.fake.hook.BinderInvocationStub; 10 | import com.vcore.utils.MethodParameterUtils; 11 | 12 | public class ILauncherAppsProxy extends BinderInvocationStub { 13 | public ILauncherAppsProxy() { 14 | super(ServiceManager.getService.call(Context.LAUNCHER_APPS_SERVICE)); 15 | } 16 | 17 | @Override 18 | protected Object getWho() { 19 | return ILauncherApps.Stub.asInterface.call(ServiceManager.getService.call(Context.LAUNCHER_APPS_SERVICE)); 20 | } 21 | 22 | @Override 23 | protected void inject(Object baseInvocation, Object proxyInvocation) { 24 | replaceSystemService(Context.LAUNCHER_APPS_SERVICE); 25 | } 26 | 27 | @Override 28 | public boolean isBadEnv() { 29 | return false; 30 | } 31 | 32 | @Override 33 | public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 34 | MethodParameterUtils.replaceFirstAppPkg(args); 35 | // TODO: shouldHideFromSuggestions 36 | return super.invoke(proxy, method, args); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IPhysicalFlingManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | import android.os.IBinder; 5 | 6 | import black.android.os.ServiceManager; 7 | import black.oem.vivo.IPhysicalFlingManager; 8 | import com.vcore.fake.hook.BinderInvocationStub; 9 | import com.vcore.fake.service.base.PkgMethodProxy; 10 | 11 | /** 12 | * @author Findger 13 | * @function 14 | * @date :2023/10/8 20:11 15 | **/ 16 | public class IPhysicalFlingManagerProxy extends BinderInvocationStub { 17 | public IPhysicalFlingManagerProxy() { 18 | super(ServiceManager.getService.call("physical_fling_service")); 19 | } 20 | 21 | @Override 22 | protected Object getWho() { 23 | return IPhysicalFlingManager.Stub.asInterface.call(ServiceManager.getService.call("physical_fling_service")); 24 | } 25 | 26 | @Override 27 | protected void inject(Object baseInvocation, Object proxyInvocation) { 28 | replaceSystemService("physical_fling_service"); 29 | } 30 | 31 | @Override 32 | public boolean isBadEnv() { 33 | return false; 34 | } 35 | 36 | @Override 37 | protected void onBindMethod() { 38 | addMethodHook(new PkgMethodProxy("isSupportPhysicalFling")); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IPopupCameraManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | 5 | import black.android.os.ServiceManager; 6 | import black.oem.vivo.IPopupCameraManager; 7 | import com.vcore.fake.hook.BinderInvocationStub; 8 | import com.vcore.fake.service.base.PkgMethodProxy; 9 | 10 | /** 11 | * @author Findger 12 | * @function 13 | * @date :2023/10/8 20:19 14 | **/ 15 | public class IPopupCameraManagerProxy extends BinderInvocationStub { 16 | 17 | public IPopupCameraManagerProxy() { 18 | super(ServiceManager.getService.call("popup_camera_service")); 19 | } 20 | 21 | @Override 22 | protected Object getWho() { 23 | return IPopupCameraManager.Stub.asInterface.call(ServiceManager.getService.call("popup_camera_service")); 24 | } 25 | 26 | @Override 27 | protected void inject(Object baseInvocation, Object proxyInvocation) { 28 | replaceSystemService("popup_camera_service"); 29 | } 30 | 31 | @Override 32 | public boolean isBadEnv() { 33 | return false; 34 | } 35 | 36 | @Override 37 | protected void onBindMethod() { 38 | addMethodHook(new PkgMethodProxy("notifyCameraStatus")); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IRoleManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | import android.os.IBinder; 5 | 6 | import black.android.os.IPowerManager; 7 | import black.android.os.ServiceManager; 8 | import black.android.role.IRoleManager; 9 | import com.vcore.fake.hook.BinderInvocationStub; 10 | import com.vcore.fake.service.base.PkgMethodProxy; 11 | import com.vcore.fake.service.base.ValueMethodProxy; 12 | 13 | /** 14 | * @author Findger 15 | * @function 16 | * @date :2023/10/8 19:45 17 | **/ 18 | public class IRoleManagerProxy extends BinderInvocationStub { 19 | 20 | public IRoleManagerProxy() { 21 | super(ServiceManager.getService.call(Context.ROLE_SERVICE)); 22 | } 23 | 24 | @Override 25 | protected Object getWho() { 26 | return IRoleManager.Stub.asInterface.call(ServiceManager.getService.call(Context.ROLE_SERVICE)); 27 | } 28 | 29 | @Override 30 | protected void inject(Object baseInvocation, Object proxyInvocation) { 31 | replaceSystemService(Context.ROLE_SERVICE); 32 | } 33 | 34 | @Override 35 | public boolean isBadEnv() { 36 | return false; 37 | } 38 | 39 | @Override 40 | protected void onBindMethod() { 41 | addMethodHook(new PkgMethodProxy("isRoleHeld")); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IStorageStatsManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import android.content.Context; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | import black.android.app.usage.IStorageStatsManager; 8 | import black.android.os.ServiceManager; 9 | import com.vcore.fake.hook.BinderInvocationStub; 10 | import com.vcore.utils.MethodParameterUtils; 11 | 12 | public class IStorageStatsManagerProxy extends BinderInvocationStub { 13 | public IStorageStatsManagerProxy() { 14 | super(ServiceManager.getService.call(Context.STORAGE_STATS_SERVICE)); 15 | } 16 | 17 | @Override 18 | protected Object getWho() { 19 | return IStorageStatsManager.Stub.asInterface.call(ServiceManager.getService.call(Context.STORAGE_STATS_SERVICE)); 20 | } 21 | 22 | @Override 23 | protected void inject(Object baseInvocation, Object proxyInvocation) { 24 | replaceSystemService(Context.STORAGE_STATS_SERVICE); 25 | } 26 | 27 | @Override 28 | public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 29 | MethodParameterUtils.replaceFirstAppPkg(args); 30 | MethodParameterUtils.replaceLastUid(args); 31 | return super.invoke(proxy, method, args); 32 | } 33 | 34 | @Override 35 | public boolean isBadEnv() { 36 | return false; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/ISystemUpdateProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import black.android.os.ServiceManager; 4 | import black.android.view.IAutoFillManager; 5 | import com.vcore.fake.hook.BinderInvocationStub; 6 | 7 | public class ISystemUpdateProxy extends BinderInvocationStub { 8 | public ISystemUpdateProxy() { 9 | super(ServiceManager.getService.call("system_update")); 10 | } 11 | 12 | @Override 13 | protected Object getWho() { 14 | return IAutoFillManager.Stub.asInterface.call(ServiceManager.getService.call("system_update")); 15 | } 16 | 17 | @Override 18 | protected void inject(Object baseInvocation, Object proxyInvocation) { 19 | replaceSystemService("system_update"); 20 | } 21 | 22 | @Override 23 | public boolean isBadEnv() { 24 | return false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IVpnManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import black.android.net.IVpnManager; 4 | import black.android.os.ServiceManager; 5 | import com.vcore.fake.hook.BinderInvocationStub; 6 | import com.vcore.fake.hook.ScanClass; 7 | 8 | @ScanClass(VpnCommonProxy.class) 9 | public class IVpnManagerProxy extends BinderInvocationStub { 10 | public static final String TAG = "IVpnManagerProxy"; 11 | 12 | public IVpnManagerProxy() { 13 | super(ServiceManager.getService.call("vpn_management")); 14 | } 15 | 16 | @Override 17 | protected Object getWho() { 18 | return IVpnManager.Stub.asInterface.call(ServiceManager.getService.call("vpn_management")); 19 | } 20 | 21 | @Override 22 | protected void inject(Object baseInvocation, Object proxyInvocation) { 23 | replaceSystemService("vpn_management"); 24 | } 25 | 26 | @Override 27 | public boolean isBadEnv() { 28 | return false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/IWifiScannerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service; 2 | 3 | import black.android.net.wifi.IWifiManager; 4 | import black.android.os.ServiceManager; 5 | import com.vcore.fake.hook.BinderInvocationStub; 6 | 7 | public class IWifiScannerProxy extends BinderInvocationStub { 8 | public IWifiScannerProxy() { 9 | super(ServiceManager.getService.call("wifiscanner")); 10 | } 11 | 12 | @Override 13 | protected Object getWho() { 14 | return IWifiManager.Stub.asInterface.call(ServiceManager.getService.call("wifiscanner")); 15 | } 16 | 17 | @Override 18 | protected void inject(Object baseInvocation, Object proxyInvocation) { 19 | replaceSystemService("wifiscanner"); 20 | } 21 | 22 | @Override 23 | public boolean isBadEnv() { 24 | return false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/base/PkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.vcore.fake.hook.MethodHook; 6 | import com.vcore.utils.MethodParameterUtils; 7 | 8 | public class PkgMethodProxy extends MethodHook { 9 | final String mName; 10 | 11 | public PkgMethodProxy(String name) { 12 | this.mName = name; 13 | } 14 | 15 | @Override 16 | protected String getMethodName() { 17 | return mName; 18 | } 19 | 20 | @Override 21 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 22 | MethodParameterUtils.replaceFirstAppPkg(args); 23 | return method.invoke(who, args); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/base/UidMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.vcore.BlackBoxCore; 6 | import com.vcore.app.BActivityThread; 7 | import com.vcore.fake.hook.MethodHook; 8 | 9 | public class UidMethodProxy extends MethodHook { 10 | private final int index; 11 | private final String name; 12 | 13 | public UidMethodProxy(String name, int index) { 14 | this.index = index; 15 | this.name = name; 16 | } 17 | 18 | @Override 19 | protected String getMethodName() { 20 | return name; 21 | } 22 | 23 | @Override 24 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 25 | int uid = (int) args[index]; 26 | if (uid == BActivityThread.getBUid()) { 27 | args[index] = BlackBoxCore.getHostUid(); 28 | } 29 | return method.invoke(who, args); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/base/ValueMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.vcore.fake.hook.MethodHook; 6 | 7 | public class ValueMethodProxy extends MethodHook { 8 | final Object mValue; 9 | final String mName; 10 | 11 | public ValueMethodProxy(String name, Object value) { 12 | this.mValue = value; 13 | this.mName = name; 14 | } 15 | 16 | @Override 17 | protected String getMethodName() { 18 | return mName; 19 | } 20 | 21 | @Override 22 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 23 | return mValue; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/context/RestrictionsManagerProxy.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service.context; 2 | 3 | import android.content.Context; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | import black.android.content.IRestrictionsManager; 8 | import black.android.os.ServiceManager; 9 | import com.vcore.BlackBoxCore; 10 | import com.vcore.fake.hook.BinderInvocationStub; 11 | import com.vcore.fake.hook.MethodHook; 12 | import com.vcore.fake.hook.ProxyMethod; 13 | 14 | public class RestrictionsManagerProxy extends BinderInvocationStub { 15 | public RestrictionsManagerProxy() { 16 | super(ServiceManager.getService.call(Context.RESTRICTIONS_SERVICE)); 17 | } 18 | 19 | @Override 20 | protected Object getWho() { 21 | return IRestrictionsManager.Stub.asInterface.call(ServiceManager.getService.call(Context.RESTRICTIONS_SERVICE)); 22 | } 23 | 24 | @Override 25 | protected void inject(Object baseInvocation, Object proxyInvocation) { 26 | replaceSystemService(Context.RESTRICTIONS_SERVICE); 27 | } 28 | 29 | @Override 30 | public boolean isBadEnv() { 31 | return false; 32 | } 33 | 34 | @ProxyMethod("getApplicationRestrictions") 35 | public static class GetApplicationRestrictions extends MethodHook { 36 | @Override 37 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 38 | args[0] = BlackBoxCore.getHostPkg(); 39 | return method.invoke(who, args); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/fake/service/context/providers/BContentProvider.java: -------------------------------------------------------------------------------- 1 | package com.vcore.fake.service.context.providers; 2 | 3 | import android.os.IInterface; 4 | 5 | public interface BContentProvider { 6 | IInterface wrapper(final IInterface contentProviderProxy, final String appPkg); 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/jnihook/JniHook.java: -------------------------------------------------------------------------------- 1 | package com.vcore.jnihook; 2 | 3 | public final class JniHook { 4 | public static final int NATIVE_OFFSET = 0; 5 | 6 | public static final int NATIVE_OFFSET_2 = 0; 7 | 8 | public static native void nativeOffset(); 9 | 10 | public static native void nativeOffset2(); 11 | } 12 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/proxy/ProxyBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package com.vcore.proxy; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.os.RemoteException; 7 | 8 | import com.vcore.BlackBoxCore; 9 | import com.vcore.entity.am.PendingResultData; 10 | import com.vcore.proxy.record.ProxyBroadcastRecord; 11 | 12 | public class ProxyBroadcastReceiver extends BroadcastReceiver { 13 | public static final String TAG = "ProxyBroadcastReceiver"; 14 | 15 | @Override 16 | public void onReceive(Context context, Intent intent) { 17 | intent.setExtrasClassLoader(context.getClassLoader()); 18 | ProxyBroadcastRecord record = ProxyBroadcastRecord.create(intent); 19 | if (record.mIntent == null) { 20 | return; 21 | } 22 | 23 | PendingResult pendingResult = goAsync(); 24 | try { 25 | BlackBoxCore.getBActivityManager().scheduleBroadcastReceiver(record.mIntent, new PendingResultData(pendingResult), record.mUserId); 26 | } catch (RemoteException e) { 27 | pendingResult.finish(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/proxy/ProxyVpnService.java: -------------------------------------------------------------------------------- 1 | package com.vcore.proxy; 2 | 3 | import android.net.VpnService; 4 | 5 | public class ProxyVpnService extends VpnService { } 6 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/proxy/record/ProxyBroadcastRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.proxy.record; 2 | 3 | import android.content.Intent; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | public class ProxyBroadcastRecord { 8 | public final Intent mIntent; 9 | public final int mUserId; 10 | 11 | public ProxyBroadcastRecord(Intent intent, int userId) { 12 | this.mIntent = intent; 13 | this.mUserId = userId; 14 | } 15 | 16 | public static void saveStub(Intent shadow, Intent target, int userId) { 17 | shadow.putExtra("_B_|_target_", target); 18 | shadow.putExtra("_B_|_user_id_", userId); 19 | } 20 | 21 | public static ProxyBroadcastRecord create(Intent intent) { 22 | Intent target = intent.getParcelableExtra("_B_|_target_"); 23 | int userId = intent.getIntExtra("_B_|_user_id_", 0); 24 | return new ProxyBroadcastRecord(target, userId); 25 | } 26 | 27 | @NonNull 28 | @Override 29 | public String toString() { 30 | return "ProxyBroadcastRecord{" + "mIntent=" + mIntent + ", mUserId=" + mUserId + '}'; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/proxy/record/ProxyPendingRecord.java: -------------------------------------------------------------------------------- 1 | package com.vcore.proxy.record; 2 | 3 | import android.content.Intent; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | public class ProxyPendingRecord { 8 | public final int mUserId; 9 | public final Intent mTarget; 10 | 11 | public ProxyPendingRecord(Intent target, int userId) { 12 | this.mUserId = userId; 13 | this.mTarget = target; 14 | } 15 | 16 | public static void saveStub(Intent shadow, Intent target, int userId) { 17 | shadow.putExtra("_B_|_P_user_id_", userId); 18 | shadow.putExtra("_B_|_P_target_", target); 19 | } 20 | 21 | public static ProxyPendingRecord create(Intent intent) { 22 | int userId = intent.getIntExtra("_B_|_P_user_id_", 0); 23 | Intent target = intent.getParcelableExtra("_B_|_P_target_"); 24 | return new ProxyPendingRecord(target, userId); 25 | } 26 | 27 | @NonNull 28 | @Override 29 | public String toString() { 30 | return "ProxyPendingActivityRecord{" + "mUserId=" + mUserId + ", mTarget=" + mTarget + '}'; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/CloseUtils.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils; 2 | 3 | import java.io.Closeable; 4 | import java.io.IOException; 5 | 6 | public class CloseUtils { 7 | public static void close(Closeable... closeables) { 8 | if (closeables == null) { 9 | return; 10 | } 11 | 12 | for (Closeable closeable : closeables) { 13 | if (closeable != null) { 14 | try { 15 | closeable.close(); 16 | } catch (IOException ignored) { } 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/DrawableUtils.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.Canvas; 5 | import android.graphics.PixelFormat; 6 | import android.graphics.drawable.BitmapDrawable; 7 | import android.graphics.drawable.Drawable; 8 | 9 | public class DrawableUtils { 10 | public static Bitmap drawableToBitmap(Drawable drawable, int width, int height) { 11 | if (drawable == null) { 12 | return null; 13 | } 14 | 15 | if (drawable instanceof BitmapDrawable) { 16 | return ((BitmapDrawable) drawable).getBitmap(); 17 | } 18 | 19 | Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; 20 | Bitmap bitmap = Bitmap.createBitmap(width, height, config); 21 | 22 | Canvas canvas = new Canvas(bitmap); 23 | drawable.setBounds(0, 0, width, height); 24 | drawable.draw(canvas); 25 | return bitmap; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/Md5Utils.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils; 2 | 3 | import java.nio.charset.StandardCharsets; 4 | import java.security.MessageDigest; 5 | 6 | public class Md5Utils { 7 | private static final char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; 8 | 9 | public static String md5(String input) { 10 | if (input == null) { 11 | return null; 12 | } 13 | 14 | try { 15 | MessageDigest messageDigest = MessageDigest.getInstance("MD5"); 16 | byte[] inputByteArray = input.getBytes(StandardCharsets.UTF_8); 17 | messageDigest.update(inputByteArray); 18 | 19 | byte[] resultByteArray = messageDigest.digest(); 20 | return byteArrayToHex(resultByteArray); 21 | } catch (Exception e) { 22 | return null; 23 | } 24 | } 25 | 26 | private static String byteArrayToHex(byte[] byteArray) { 27 | char[] resultCharArray = new char[byteArray.length * 2]; 28 | int index = 0; 29 | 30 | for (byte b : byteArray) { 31 | resultCharArray[index++] = hexDigits[b >>> 4 & 0xf]; 32 | resultCharArray[index++] = hexDigits[b & 0xf]; 33 | } 34 | return new String(resultCharArray); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/AccountManagerCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | public class AccountManagerCompat { 4 | /** 5 | * Boolean, if set and 'customTokens' the authenticator is responsible for 6 | * notifications. 7 | */ 8 | public static final String KEY_NOTIFY_ON_FAILURE = "notifyOnAuthFailure"; 9 | } 10 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/ApplicationThreadCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.android.app.ApplicationThreadNative; 7 | import black.android.app.IApplicationThread; 8 | 9 | public class ApplicationThreadCompat { 10 | public static IInterface asInterface(IBinder binder) { 11 | if (BuildCompat.isOreo()) { 12 | return IApplicationThread.Stub.asInterface.call(binder); 13 | } 14 | return ApplicationThreadNative.asInterface.call(binder); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/BundleCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | import android.content.Intent; 4 | import android.os.Build; 5 | import android.os.Bundle; 6 | import android.os.IBinder; 7 | 8 | public class BundleCompat { 9 | public static IBinder getBinder(Bundle bundle, String key) { 10 | if (Build.VERSION.SDK_INT >= 18) { 11 | return bundle.getBinder(key); 12 | } 13 | return black.android.os.Bundle.getIBinder.call(bundle, key); 14 | } 15 | 16 | public static void putBinder(Bundle bundle, String key, IBinder value) { 17 | if (Build.VERSION.SDK_INT >= 18) { 18 | bundle.putBinder(key, value); 19 | } 20 | black.android.os.Bundle.putIBinder.call(bundle, key, value); 21 | } 22 | 23 | public static void putBinder(Intent intent, String key, IBinder value) { 24 | Bundle bundle = new Bundle(); 25 | putBinder(bundle, "binder", value); 26 | intent.putExtra(key, bundle); 27 | } 28 | 29 | public static IBinder getBinder(Intent intent, String key) { 30 | Bundle bundle = intent.getBundleExtra(key); 31 | if (bundle != null) { 32 | return getBinder(bundle, "binder"); 33 | } 34 | return null; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/ParceledListSliceCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | import java.util.List; 4 | 5 | import black.android.content.pm.ParceledListSlice; 6 | 7 | public class ParceledListSliceCompat { 8 | public static Object create(List list) { 9 | Object slice = ParceledListSlice._new1.newInstance(list); 10 | if (slice != null) { 11 | return slice; 12 | } else { 13 | slice = ParceledListSlice._new0.newInstance(); 14 | } 15 | 16 | for (Object item : list) { 17 | ParceledListSlice.append.call(slice, item); 18 | } 19 | ParceledListSlice.setLastSlice.call(slice, true); 20 | return slice; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/StrictModeCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | import black.android.os.StrictMode; 4 | 5 | public class StrictModeCompat { 6 | public static final int DETECT_VM_FILE_URI_EXPOSURE = StrictMode.DETECT_VM_FILE_URI_EXPOSURE.get() == null ? 7 | (0x20 << 8) : StrictMode.DETECT_VM_FILE_URI_EXPOSURE.get(); 8 | 9 | public static final int PENALTY_DEATH_ON_FILE_URI_EXPOSURE = StrictMode.PENALTY_DEATH_ON_FILE_URI_EXPOSURE.get() == null ? 10 | (0x04 << 24) : StrictMode.PENALTY_DEATH_ON_FILE_URI_EXPOSURE.get(); 11 | 12 | public static void disableDeathOnFileUriExposure() { 13 | try { 14 | StrictMode.disableDeathOnFileUriExposure.call(); 15 | } catch (Throwable e) { 16 | try { 17 | int sVmPolicyMask = StrictMode.sVmPolicyMask.get(); 18 | sVmPolicyMask &= ~(DETECT_VM_FILE_URI_EXPOSURE | PENALTY_DEATH_ON_FILE_URI_EXPOSURE); 19 | StrictMode.sVmPolicyMask.set(sVmPolicyMask); 20 | } catch (Throwable e2) { 21 | e2.printStackTrace(); 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/compat/SystemPropertiesCompat.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.compat; 2 | 3 | import android.text.TextUtils; 4 | 5 | import black.android.os.SystemProperties; 6 | 7 | public class SystemPropertiesCompat { 8 | public static String get(String key, String def) { 9 | try { 10 | return SystemProperties.get0.call(key, def); 11 | } catch (Exception e) { 12 | e.printStackTrace(); 13 | } 14 | return def; 15 | } 16 | 17 | public static String get(String key) { 18 | try { 19 | return SystemProperties.get1.call(key); 20 | } catch (Exception e) { 21 | e.printStackTrace(); 22 | } 23 | return null; 24 | } 25 | 26 | public static int getInt(String key, int def) { 27 | try { 28 | return SystemProperties.getInt.call(key, def); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | return def; 33 | } 34 | 35 | public static boolean isExist(String key) { 36 | return !TextUtils.isEmpty(get(key)); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Bcore/src/main/java/com/vcore/utils/provider/ProviderCall.java: -------------------------------------------------------------------------------- 1 | package com.vcore.utils.provider; 2 | 3 | import android.content.Context; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | 7 | import com.vcore.BlackBoxCore; 8 | import com.vcore.utils.compat.ContentProviderCompat; 9 | 10 | public class ProviderCall { 11 | public static Bundle callSafely(String authority, String methodName, String arg, Bundle bundle) { 12 | try { 13 | return call(authority, BlackBoxCore.getContext(), methodName, arg, bundle, 5); 14 | } catch (IllegalAccessException e) { 15 | e.printStackTrace(); 16 | } 17 | return null; 18 | } 19 | 20 | public static Bundle call(String authority, Context context, String method, String arg, Bundle bundle, int retryCount) throws IllegalAccessException { 21 | Uri uri = Uri.parse("content://" + authority); 22 | return ContentProviderCompat.call(context, uri, method, arg, bundle, retryCount); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Bcore/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reveny/Android-Virtual-Inject/8533fc21f52f3bd25af473e2da4b5f5dc41aeca0/Bcore/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /Bcore/src/main/res/layout/activity_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /Bcore/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | :black 4 | -------------------------------------------------------------------------------- /Bcore/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values-sw600dp/integer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0x50 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-v28/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values-v30/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | @color/material_grey_500 3 | @color/material_grey_300 4 | 5 | @color/abc_primary_text_material_dark 6 | @color/abc_secondary_text_material_dark 7 | 8 | @color/abc_primary_text_material_light 9 | @color/abc_secondary_text_material_light 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors_google.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #1A73E8 4 | #8AB4F8 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/integer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0x00800007 4 | 0x30 5 | 0 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Virtual Inject 3 | Join our %1$s channel

Copyright © %2$s
]]>
4 | About 5 |
-------------------------------------------------------------------------------- /app/src/main/res/values/themes_custom.xml: -------------------------------------------------------------------------------- 1 | 2 |