├── .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 | * INSTALL_FAILED_DUPLICATE_PERMISSION
21 | * Two 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.
25 | *
26 | *
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 |
8 |
--------------------------------------------------------------------------------
/Bcore/src/main/res/xml/filepath.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/App.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 | import android.content.SharedPreferences;
6 |
7 | import androidx.preference.PreferenceManager;
8 |
9 | import com.vcore.BlackBoxCore;
10 | import com.vcore.app.configuration.ClientConfiguration;
11 |
12 | public class App extends Application {
13 | private static App instance = null;
14 | private SharedPreferences pref;
15 | public static SharedPreferences getPreferences() {
16 | return instance.pref;
17 | }
18 |
19 | @Override
20 | protected void attachBaseContext(Context base) {
21 | super.attachBaseContext(base);
22 | try {
23 | BlackBoxCore.get().doAttachBaseContext(base, new ClientConfiguration() {
24 | @Override
25 | public String getHostPackageName() {
26 | return base.getPackageName();
27 | }
28 | });
29 | } catch (Exception e) {
30 | e.printStackTrace();
31 | }
32 | }
33 |
34 | @Override
35 | public void onCreate() {
36 | super.onCreate();
37 | instance = this;
38 | pref = PreferenceManager.getDefaultSharedPreferences(this);
39 | BlackBoxCore.get().doCreate();
40 | }
41 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/Application.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject;
2 |
3 | import android.content.Context;
4 |
5 | import com.vcore.BlackBoxCore;
6 | import com.vcore.app.configuration.ClientConfiguration;
7 |
8 | public class Application extends android.app.Application {
9 | @Override
10 | protected void attachBaseContext(Context base) {
11 | super.attachBaseContext(base);
12 | try {
13 | BlackBoxCore.get().doAttachBaseContext(base, new ClientConfiguration() {
14 | @Override
15 | public String getHostPackageName() {
16 | return base.getPackageName();
17 | }
18 | });
19 | } catch (Exception e) {
20 | e.printStackTrace();
21 | }
22 | }
23 |
24 | @Override
25 | public void onCreate() {
26 | super.onCreate();
27 | BlackBoxCore.get().doCreate();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject;
2 |
3 | import android.os.Bundle;
4 | import android.util.Log;
5 |
6 | import androidx.activity.EdgeToEdge;
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import androidx.core.graphics.Insets;
9 | import androidx.core.view.ViewCompat;
10 | import androidx.core.view.WindowInsetsCompat;
11 |
12 | import com.vcore.BlackBoxCore;
13 |
14 | public class MainActivity extends AppCompatActivity {
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | EdgeToEdge.enable(this);
20 | setContentView(R.layout.activity_main);
21 | ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.fragment_main), (v, insets) -> {
22 | Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
23 | v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
24 | return insets;
25 | });
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/ui/activity/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject.ui.activity;
2 |
3 | import android.os.Bundle;
4 |
5 | import com.reveny.virtualinject.R;
6 | import com.reveny.virtualinject.databinding.ActivityMainBinding;
7 | import com.reveny.virtualinject.ui.fragment.HomeFragment;
8 |
9 | public class MainActivity extends BaseActivity {
10 |
11 | @Override
12 | public void onCreate(Bundle savedInstanceState) {
13 |
14 | super.onCreate(savedInstanceState);
15 |
16 | ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
17 | setContentView(binding.getRoot());
18 |
19 | getSupportFragmentManager().beginTransaction().replace(R.id.container, new HomeFragment()).commit();
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/ui/fragment/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject.ui.fragment;
2 |
3 | import android.view.View;
4 |
5 | import androidx.appcompat.widget.Toolbar;
6 | import androidx.fragment.app.Fragment;
7 |
8 | public class BaseFragment extends Fragment {
9 |
10 | public void setupToolbar(Toolbar toolbar, View tipsView, int title, int menu) {
11 | setupToolbar(toolbar, tipsView, getString(title), menu, null);
12 | }
13 |
14 | public void setupToolbar(Toolbar toolbar, View tipsView, String title, int menu, View.OnClickListener navigationOnClickListener) {
15 | toolbar.setTitle(title);
16 | toolbar.setTooltipText(title);
17 | if (tipsView != null) tipsView.setTooltipText(title);
18 | if (menu != -1) {
19 | toolbar.inflateMenu(menu);
20 | toolbar.setOnMenuItemClickListener(this::onOptionsItemSelected);
21 | onPrepareOptionsMenu(toolbar.getMenu());
22 | }
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/util/ThemeUtil.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject.util;
2 |
3 | import android.content.SharedPreferences;
4 |
5 | import androidx.annotation.StyleRes;
6 |
7 | import com.google.android.material.color.DynamicColors;
8 | import com.reveny.virtualinject.App;
9 | import com.reveny.virtualinject.R;
10 |
11 | import java.util.HashMap;
12 | import java.util.Map;
13 |
14 | public class ThemeUtil {
15 | private static final Map colorThemeMap = new HashMap<>();
16 | private static final SharedPreferences preferences = App.getPreferences();
17 |
18 | static {
19 | colorThemeMap.put("MATERIAL_INDIGO", R.style.ThemeOverlay_MaterialSakura);
20 | }
21 | public static boolean isSystemAccent() {
22 | return DynamicColors.isDynamicColorAvailable() && preferences.getBoolean("follow_system_accent", true);
23 | }
24 | public static String getColorTheme() {
25 | return isSystemAccent() ? "SYSTEM" : preferences.getString("theme_color", "COLOR_SAKURA");
26 | }
27 | @StyleRes
28 | public static int getColorThemeStyleRes() {
29 | return colorThemeMap.getOrDefault(getColorTheme(), R.style.ThemeOverlay_MaterialSakura);
30 | }
31 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/util/Utility.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject.util;
2 |
3 | import android.content.Context;
4 | import android.content.pm.ApplicationInfo;
5 | import android.content.pm.PackageManager;
6 |
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | public class Utility {
11 | public static List getInstalledApps(Context context) {
12 | List packages = context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
13 | List ret = new ArrayList<>();
14 |
15 | for (ApplicationInfo appInfo : packages) {
16 | // Check if the application is not a system app and not the current app
17 | if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0 && !appInfo.packageName.equals(context.getPackageName())) {
18 | ret.add(appInfo.packageName);
19 | }
20 | }
21 |
22 | return ret;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/reveny/virtualinject/util/chrome/CustomTabsURLSpan.java:
--------------------------------------------------------------------------------
1 | package com.reveny.virtualinject.util.chrome;
2 |
3 | import android.app.Activity;
4 | import android.text.style.URLSpan;
5 | import android.view.View;
6 |
7 | import com.reveny.virtualinject.util.NavUtil;
8 |
9 |
10 | public class CustomTabsURLSpan extends URLSpan {
11 |
12 | private final Activity activity;
13 |
14 | public CustomTabsURLSpan(Activity activity, String url) {
15 | super(url);
16 | this.activity = activity;
17 | }
18 |
19 | @Override
20 | public void onClick(View widget) {
21 | String url = getURL();
22 | NavUtil.startURL(activity, url);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/iconsax_closecircle.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |