├── .gitattributes
├── .gitignore
├── Bcore
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
├── src
│ ├── androidTest
│ │ └── java
│ │ │ └── top
│ │ │ └── niunaijun
│ │ │ └── blackbox
│ │ │ └── ExampleInstrumentedTest.java
│ ├── 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
│ │ │ └── top
│ │ │ │ └── niunaijun
│ │ │ │ └── blackbox
│ │ │ │ ├── client
│ │ │ │ └── IBClient.aidl
│ │ │ │ ├── entity
│ │ │ │ ├── ClientConfig.aidl
│ │ │ │ ├── JobRecord.aidl
│ │ │ │ ├── UnbindRecord.aidl
│ │ │ │ └── pm
│ │ │ │ │ ├── InstallOption.aidl
│ │ │ │ │ ├── InstallResult.aidl
│ │ │ │ │ ├── InstalledModule.aidl
│ │ │ │ │ └── InstalledPackage.aidl
│ │ │ │ └── server
│ │ │ │ ├── am
│ │ │ │ ├── IBActivityManagerService.aidl
│ │ │ │ └── IBJobManagerService.aidl
│ │ │ │ ├── os
│ │ │ │ └── IBStorageManagerService.aidl
│ │ │ │ ├── pm
│ │ │ │ ├── BPackageSettings.aidl
│ │ │ │ ├── IBPackageInstallerService.aidl
│ │ │ │ ├── IBPackageManagerService.aidl
│ │ │ │ └── IBXposedManagerService.aidl
│ │ │ │ └── user
│ │ │ │ ├── BUserInfo.aidl
│ │ │ │ └── IBUserManagerService.aidl
│ │ ├── assets
│ │ │ └── junit.jar
│ │ ├── java
│ │ │ ├── android
│ │ │ │ ├── content
│ │ │ │ │ ├── SyncInfo.java
│ │ │ │ │ ├── SyncStatusInfo.java
│ │ │ │ │ └── pm
│ │ │ │ │ │ └── PackageParser.java
│ │ │ │ ├── location
│ │ │ │ │ └── LocationRequest.java
│ │ │ │ └── os
│ │ │ │ │ └── ParcelableException.java
│ │ │ ├── de
│ │ │ │ └── robv
│ │ │ │ │ └── android
│ │ │ │ │ └── xposed
│ │ │ │ │ └── XSharedPreferences.java
│ │ │ ├── mirror
│ │ │ │ ├── MethodParams.java
│ │ │ │ ├── MethodReflectParams.java
│ │ │ │ ├── RefBoolean.java
│ │ │ │ ├── RefClass.java
│ │ │ │ ├── RefConstructor.java
│ │ │ │ ├── RefDouble.java
│ │ │ │ ├── RefFloat.java
│ │ │ │ ├── RefInt.java
│ │ │ │ ├── RefLong.java
│ │ │ │ ├── RefMethod.java
│ │ │ │ ├── RefObject.java
│ │ │ │ ├── RefStaticInt.java
│ │ │ │ ├── RefStaticMethod.java
│ │ │ │ ├── RefStaticObject.java
│ │ │ │ ├── android
│ │ │ │ │ ├── accounts
│ │ │ │ │ │ └── IAccountManager.java
│ │ │ │ │ ├── app
│ │ │ │ │ │ ├── Activity.java
│ │ │ │ │ │ ├── ActivityManager.java
│ │ │ │ │ │ ├── ActivityManagerNative.java
│ │ │ │ │ │ ├── ActivityManagerOreo.java
│ │ │ │ │ │ ├── ActivityThread.java
│ │ │ │ │ │ ├── ActivityThreadNMR1.java
│ │ │ │ │ │ ├── ActivityThreadQ.java
│ │ │ │ │ │ ├── AlarmManager.java
│ │ │ │ │ │ ├── AppOpsManager.java
│ │ │ │ │ │ ├── ApplicationThreadNative.java
│ │ │ │ │ │ ├── ClientTransactionHandler.java
│ │ │ │ │ │ ├── ContextImpl.java
│ │ │ │ │ │ ├── ContextImplICS.java
│ │ │ │ │ │ ├── ContextImplKitkat.java
│ │ │ │ │ │ ├── IActivityManager.java
│ │ │ │ │ │ ├── IActivityManagerICS.java
│ │ │ │ │ │ ├── IActivityManagerL.java
│ │ │ │ │ │ ├── IActivityManagerN.java
│ │ │ │ │ │ ├── IActivityTaskManager.java
│ │ │ │ │ │ ├── IAlarmManager.java
│ │ │ │ │ │ ├── IApplicationThread.java
│ │ │ │ │ │ ├── IApplicationThreadICSMR1.java
│ │ │ │ │ │ ├── IApplicationThreadJBMR1.java
│ │ │ │ │ │ ├── IApplicationThreadKitkat.java
│ │ │ │ │ │ ├── IApplicationThreadOreo.java
│ │ │ │ │ │ ├── ISearchManager.java
│ │ │ │ │ │ ├── IServiceConnectionO.java
│ │ │ │ │ │ ├── IUsageStatsManager.java
│ │ │ │ │ │ ├── IWallpaperManager.java
│ │ │ │ │ │ ├── Instrumentation.java
│ │ │ │ │ │ ├── LoadedApk.java
│ │ │ │ │ │ ├── LoadedApkHuaWei.java
│ │ │ │ │ │ ├── LoadedApkICS.java
│ │ │ │ │ │ ├── LoadedApkKitkat.java
│ │ │ │ │ │ ├── Notification.java
│ │ │ │ │ │ ├── NotificationChannel.java
│ │ │ │ │ │ ├── NotificationChannelGroup.java
│ │ │ │ │ │ ├── NotificationL.java
│ │ │ │ │ │ ├── NotificationM.java
│ │ │ │ │ │ ├── NotificationManager.java
│ │ │ │ │ │ ├── NotificationO.java
│ │ │ │ │ │ ├── PendingIntentJBMR2.java
│ │ │ │ │ │ ├── PendingIntentO.java
│ │ │ │ │ │ ├── Service.java
│ │ │ │ │ │ ├── ServiceStartArgs.java
│ │ │ │ │ │ ├── SharedPreferencesImpl.java
│ │ │ │ │ │ ├── WallpaperManager.java
│ │ │ │ │ │ ├── admin
│ │ │ │ │ │ │ └── IDevicePolicyManager.java
│ │ │ │ │ │ ├── backup
│ │ │ │ │ │ │ └── IBackupManager.java
│ │ │ │ │ │ ├── job
│ │ │ │ │ │ │ ├── IJobScheduler.java
│ │ │ │ │ │ │ ├── JobInfo.java
│ │ │ │ │ │ │ ├── JobParameters.java
│ │ │ │ │ │ │ └── JobWorkItem.java
│ │ │ │ │ │ ├── role
│ │ │ │ │ │ │ └── IRoleManager.java
│ │ │ │ │ │ ├── servertransaction
│ │ │ │ │ │ │ ├── ActivityLifecycleItem.java
│ │ │ │ │ │ │ ├── ActivityResultItem.java
│ │ │ │ │ │ │ ├── ClientTransaction.java
│ │ │ │ │ │ │ ├── LaunchActivityItem.java
│ │ │ │ │ │ │ └── TopResumedActivityChangeItem.java
│ │ │ │ │ │ └── usage
│ │ │ │ │ │ │ ├── IStorageStatsManager.java
│ │ │ │ │ │ │ └── StorageStats.java
│ │ │ │ │ ├── bluetooth
│ │ │ │ │ │ ├── IBluetooth.java
│ │ │ │ │ │ └── IBluetoothManager.java
│ │ │ │ │ ├── content
│ │ │ │ │ │ ├── BroadcastReceiver.java
│ │ │ │ │ │ ├── ClipboardManager.java
│ │ │ │ │ │ ├── ClipboardManagerOreo.java
│ │ │ │ │ │ ├── ContentProviderClient.java
│ │ │ │ │ │ ├── ContentProviderClientICS.java
│ │ │ │ │ │ ├── ContentProviderClientJB.java
│ │ │ │ │ │ ├── ContentProviderClientQ.java
│ │ │ │ │ │ ├── ContentProviderHolderOreo.java
│ │ │ │ │ │ ├── ContentProviderNative.java
│ │ │ │ │ │ ├── ContentResolver.java
│ │ │ │ │ │ ├── ContentResolverJBMR2.java
│ │ │ │ │ │ ├── IClipboard.java
│ │ │ │ │ │ ├── IContentProvider.java
│ │ │ │ │ │ ├── IContentService.java
│ │ │ │ │ │ ├── IIntentReceiver.java
│ │ │ │ │ │ ├── IIntentReceiverJB.java
│ │ │ │ │ │ ├── IRestrictionsManager.java
│ │ │ │ │ │ ├── IntentFilter.java
│ │ │ │ │ │ ├── IntentSender.java
│ │ │ │ │ │ ├── PeriodicSync.java
│ │ │ │ │ │ ├── SyncAdapterType.java
│ │ │ │ │ │ ├── SyncAdapterTypeN.java
│ │ │ │ │ │ ├── SyncInfo.java
│ │ │ │ │ │ ├── SyncRequest.java
│ │ │ │ │ │ ├── pm
│ │ │ │ │ │ │ ├── ApplicationInfoL.java
│ │ │ │ │ │ │ ├── ApplicationInfoN.java
│ │ │ │ │ │ │ ├── ApplicationInfoP.java
│ │ │ │ │ │ │ ├── ILauncherApps.java
│ │ │ │ │ │ │ ├── IShortcutService.java
│ │ │ │ │ │ │ ├── LauncherApps.java
│ │ │ │ │ │ │ ├── PackageInstaller.java
│ │ │ │ │ │ │ ├── PackageParser.java
│ │ │ │ │ │ │ ├── PackageParserJellyBean.java
│ │ │ │ │ │ │ ├── PackageParserJellyBean17.java
│ │ │ │ │ │ │ ├── PackageParserLollipop.java
│ │ │ │ │ │ │ ├── PackageParserLollipop22.java
│ │ │ │ │ │ │ ├── PackageParserMarshmallow.java
│ │ │ │ │ │ │ ├── PackageParserNougat.java
│ │ │ │ │ │ │ ├── PackageParserPie.java
│ │ │ │ │ │ │ ├── PackageUserState.java
│ │ │ │ │ │ │ ├── ParceledListSlice.java
│ │ │ │ │ │ │ ├── ParceledListSliceJBMR2.java
│ │ │ │ │ │ │ ├── SigningInfo.java
│ │ │ │ │ │ │ └── UserInfo.java
│ │ │ │ │ │ └── res
│ │ │ │ │ │ │ ├── AssetManager.java
│ │ │ │ │ │ │ └── CompatibilityInfo.java
│ │ │ │ │ ├── ddm
│ │ │ │ │ │ ├── DdmHandleAppName.java
│ │ │ │ │ │ └── DdmHandleAppNameJBMR1.java
│ │ │ │ │ ├── graphics
│ │ │ │ │ │ └── drawable
│ │ │ │ │ │ │ └── Icon.java
│ │ │ │ │ ├── hardware
│ │ │ │ │ │ ├── display
│ │ │ │ │ │ │ ├── DisplayManagerGlobal.java
│ │ │ │ │ │ │ └── IDisplayManager.java
│ │ │ │ │ │ ├── fingerprint
│ │ │ │ │ │ │ └── IFingerprintService.java
│ │ │ │ │ │ ├── location
│ │ │ │ │ │ │ └── IContextHubService.java
│ │ │ │ │ │ └── usb
│ │ │ │ │ │ │ ├── IUsbManager.java
│ │ │ │ │ │ │ └── UsbManager.java
│ │ │ │ │ ├── location
│ │ │ │ │ │ ├── GpsStatus.java
│ │ │ │ │ │ ├── GpsStatusL.java
│ │ │ │ │ │ ├── ILocationListener.java
│ │ │ │ │ │ ├── ILocationManager.java
│ │ │ │ │ │ ├── LocationManager.java
│ │ │ │ │ │ ├── LocationManagerQ.java
│ │ │ │ │ │ └── LocationRequestL.java
│ │ │ │ │ ├── media
│ │ │ │ │ │ ├── AudioManager.java
│ │ │ │ │ │ ├── IAudioService.java
│ │ │ │ │ │ ├── IMediaRouterService.java
│ │ │ │ │ │ ├── MediaRouter.java
│ │ │ │ │ │ └── session
│ │ │ │ │ │ │ └── ISessionManager.java
│ │ │ │ │ ├── net
│ │ │ │ │ │ ├── IConnectivityManager.java
│ │ │ │ │ │ ├── NetworkInfo.java
│ │ │ │ │ │ └── wifi
│ │ │ │ │ │ │ ├── IWifiManager.java
│ │ │ │ │ │ │ ├── WifiInfo.java
│ │ │ │ │ │ │ ├── WifiManager.java
│ │ │ │ │ │ │ ├── WifiScanner.java
│ │ │ │ │ │ │ └── WifiSsid.java
│ │ │ │ │ ├── nfc
│ │ │ │ │ │ └── INfcAdapter.java
│ │ │ │ │ ├── os
│ │ │ │ │ │ ├── BaseBundle.java
│ │ │ │ │ │ ├── Build.java
│ │ │ │ │ │ ├── Bundle.java
│ │ │ │ │ │ ├── BundleICS.java
│ │ │ │ │ │ ├── DropBoxManager.java
│ │ │ │ │ │ ├── Handler.java
│ │ │ │ │ │ ├── IDeviceIdentifiersPolicyService.java
│ │ │ │ │ │ ├── INetworkManagementService.java
│ │ │ │ │ │ ├── IPowerManager.java
│ │ │ │ │ │ ├── IUserManager.java
│ │ │ │ │ │ ├── MemoryFile.java
│ │ │ │ │ │ ├── Message.java
│ │ │ │ │ │ ├── Parcel.java
│ │ │ │ │ │ ├── Process.java
│ │ │ │ │ │ ├── ServiceManager.java
│ │ │ │ │ │ ├── StrictMode.java
│ │ │ │ │ │ ├── health
│ │ │ │ │ │ │ └── SystemHealthManager.java
│ │ │ │ │ │ ├── mount
│ │ │ │ │ │ │ └── IMountService.java
│ │ │ │ │ │ └── storage
│ │ │ │ │ │ │ ├── IStorageManager.java
│ │ │ │ │ │ │ ├── StorageManager.java
│ │ │ │ │ │ │ └── StorageVolume.java
│ │ │ │ │ ├── providers
│ │ │ │ │ │ └── Settings.java
│ │ │ │ │ ├── renderscript
│ │ │ │ │ │ └── RenderScriptCacheDir.java
│ │ │ │ │ ├── rms
│ │ │ │ │ │ ├── HwSysResImplP.java
│ │ │ │ │ │ └── resource
│ │ │ │ │ │ │ ├── ReceiverResourceLP.java
│ │ │ │ │ │ │ ├── ReceiverResourceM.java
│ │ │ │ │ │ │ ├── ReceiverResourceN.java
│ │ │ │ │ │ │ └── ReceiverResourceO.java
│ │ │ │ │ ├── security
│ │ │ │ │ │ └── net
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ │ └── NetworkSecurityConfigProvider.java
│ │ │ │ │ ├── service
│ │ │ │ │ │ ├── notification
│ │ │ │ │ │ │ └── StatusBarNotification.java
│ │ │ │ │ │ └── persistentdata
│ │ │ │ │ │ │ └── IPersistentDataBlockService.java
│ │ │ │ │ ├── telephony
│ │ │ │ │ │ ├── CellIdentityCdma.java
│ │ │ │ │ │ ├── CellIdentityGsm.java
│ │ │ │ │ │ ├── CellInfoCdma.java
│ │ │ │ │ │ ├── CellInfoGsm.java
│ │ │ │ │ │ ├── CellSignalStrengthCdma.java
│ │ │ │ │ │ ├── CellSignalStrengthGsm.java
│ │ │ │ │ │ ├── NeighboringCellInfo.java
│ │ │ │ │ │ └── SmsManager.java
│ │ │ │ │ ├── util
│ │ │ │ │ │ └── Singleton.java
│ │ │ │ │ ├── view
│ │ │ │ │ │ ├── CompatibilityInfoHolder.java
│ │ │ │ │ │ ├── Display.java
│ │ │ │ │ │ ├── DisplayAdjustments.java
│ │ │ │ │ │ ├── HardwareRenderer.java
│ │ │ │ │ │ ├── IAutoFillManager.java
│ │ │ │ │ │ ├── IGraphicsStats.java
│ │ │ │ │ │ ├── IWindowManager.java
│ │ │ │ │ │ ├── RenderScript.java
│ │ │ │ │ │ ├── SurfaceControl.java
│ │ │ │ │ │ ├── ThreadedRenderer.java
│ │ │ │ │ │ ├── WindowManagerGlobal.java
│ │ │ │ │ │ └── accessibility
│ │ │ │ │ │ │ └── IAccessibilityManager.java
│ │ │ │ │ ├── webkit
│ │ │ │ │ │ ├── IWebViewUpdateService.java
│ │ │ │ │ │ └── WebViewFactory.java
│ │ │ │ │ └── widget
│ │ │ │ │ │ ├── RemoteViews.java
│ │ │ │ │ │ └── Toast.java
│ │ │ │ ├── com
│ │ │ │ │ └── android
│ │ │ │ │ │ └── internal
│ │ │ │ │ │ ├── R_Hide.java
│ │ │ │ │ │ ├── app
│ │ │ │ │ │ ├── IAppOpsService.java
│ │ │ │ │ │ ├── IBatteryStats.java
│ │ │ │ │ │ └── ISmtOpsService.java
│ │ │ │ │ │ ├── appwidget
│ │ │ │ │ │ └── IAppWidgetService.java
│ │ │ │ │ │ ├── content
│ │ │ │ │ │ ├── NativeLibraryHelper.java
│ │ │ │ │ │ └── ReferrerIntent.java
│ │ │ │ │ │ ├── os
│ │ │ │ │ │ ├── IDropBoxManagerService.java
│ │ │ │ │ │ ├── IVibratorService.java
│ │ │ │ │ │ └── UserManager.java
│ │ │ │ │ │ ├── policy
│ │ │ │ │ │ └── PhoneWindow.java
│ │ │ │ │ │ ├── telecom
│ │ │ │ │ │ └── ITelecomService.java
│ │ │ │ │ │ ├── telephony
│ │ │ │ │ │ ├── IHwTelephony.java
│ │ │ │ │ │ ├── IMms.java
│ │ │ │ │ │ ├── IPhoneSubInfo.java
│ │ │ │ │ │ ├── ISms.java
│ │ │ │ │ │ ├── ISub.java
│ │ │ │ │ │ ├── ITelephony.java
│ │ │ │ │ │ ├── ITelephonyRegistry.java
│ │ │ │ │ │ └── PhoneConstantsMtk.java
│ │ │ │ │ │ └── view
│ │ │ │ │ │ ├── IInputMethodManager.java
│ │ │ │ │ │ └── inputmethod
│ │ │ │ │ │ └── InputMethodManager.java
│ │ │ │ ├── dalvik
│ │ │ │ │ └── system
│ │ │ │ │ │ └── VMRuntime.java
│ │ │ │ ├── java
│ │ │ │ │ ├── io
│ │ │ │ │ │ ├── File.java
│ │ │ │ │ │ ├── FileSystem.java
│ │ │ │ │ │ └── UnixFileSystem.java
│ │ │ │ │ └── lang
│ │ │ │ │ │ ├── ThreadGroup.java
│ │ │ │ │ │ └── ThreadGroupN.java
│ │ │ │ ├── libcore
│ │ │ │ │ └── io
│ │ │ │ │ │ ├── ForwardingOs.java
│ │ │ │ │ │ ├── Libcore.java
│ │ │ │ │ │ └── Os.java
│ │ │ │ └── oem
│ │ │ │ │ ├── HwApiCacheManagerEx.java
│ │ │ │ │ ├── HwFrameworkFactory.java
│ │ │ │ │ ├── IFlymePermissionService.java
│ │ │ │ │ └── ZTEILocationManager.java
│ │ │ └── top
│ │ │ │ └── niunaijun
│ │ │ │ ├── blackbox
│ │ │ │ ├── BEnvironment.java
│ │ │ │ ├── BlackBoxCore.java
│ │ │ │ ├── client
│ │ │ │ │ ├── BClient.java
│ │ │ │ │ ├── ClientConfiguration.java
│ │ │ │ │ ├── CrashHandler.java
│ │ │ │ │ ├── StubManifest.java
│ │ │ │ │ ├── VMCore.java
│ │ │ │ │ ├── frameworks
│ │ │ │ │ │ ├── BActivityManager.java
│ │ │ │ │ │ ├── BJobManager.java
│ │ │ │ │ │ ├── BPackageManager.java
│ │ │ │ │ │ ├── BStorageManager.java
│ │ │ │ │ │ ├── BUserManager.java
│ │ │ │ │ │ └── BXposedManager.java
│ │ │ │ │ ├── hook
│ │ │ │ │ │ ├── AppLifecycleCallback.java
│ │ │ │ │ │ ├── BinderInvocationStub.java
│ │ │ │ │ │ ├── ClassInvocationStub.java
│ │ │ │ │ │ ├── HookManager.java
│ │ │ │ │ │ ├── IInjectHook.java
│ │ │ │ │ │ ├── IOManager.java
│ │ │ │ │ │ ├── MethodHook.java
│ │ │ │ │ │ ├── ResultStaticMethodProxy.java
│ │ │ │ │ │ ├── common
│ │ │ │ │ │ │ └── CallingPackageStub.java
│ │ │ │ │ │ ├── delegate
│ │ │ │ │ │ │ ├── ActivityLifecycleDelegate.java
│ │ │ │ │ │ │ ├── AppInstrumentation.java
│ │ │ │ │ │ │ ├── ContentProviderDelegate.java
│ │ │ │ │ │ │ ├── InstrumentationDelegate.java
│ │ │ │ │ │ │ └── ServiceConnectionDelegate.java
│ │ │ │ │ │ ├── env
│ │ │ │ │ │ │ ├── ClientSystemEnv.java
│ │ │ │ │ │ │ └── VirtualRuntime.java
│ │ │ │ │ │ ├── fixer
│ │ │ │ │ │ │ ├── ActivityFixer.java
│ │ │ │ │ │ │ └── ContextFixer.java
│ │ │ │ │ │ ├── provider
│ │ │ │ │ │ │ ├── FileProvider.java
│ │ │ │ │ │ │ └── FileProviderHandler.java
│ │ │ │ │ │ └── proxies
│ │ │ │ │ │ │ ├── accessibility
│ │ │ │ │ │ │ └── AccessibilityManagerStub.java
│ │ │ │ │ │ │ ├── am
│ │ │ │ │ │ │ ├── ActivityManagerStub.java
│ │ │ │ │ │ │ ├── ActivityTaskManagerStub.java
│ │ │ │ │ │ │ └── CommonStub.java
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ ├── AlarmManagerStub.java
│ │ │ │ │ │ │ ├── HCallbackStub.java
│ │ │ │ │ │ │ ├── JobServiceStub.java
│ │ │ │ │ │ │ └── NotificationManagerStub.java
│ │ │ │ │ │ │ ├── appos
│ │ │ │ │ │ │ └── AppOpsManagerStub.java
│ │ │ │ │ │ │ ├── appwidget
│ │ │ │ │ │ │ └── AppWidgetManagerStub.java
│ │ │ │ │ │ │ ├── context
│ │ │ │ │ │ │ ├── ContentServiceStub.java
│ │ │ │ │ │ │ ├── RestrictionsManagerStub.java
│ │ │ │ │ │ │ └── providers
│ │ │ │ │ │ │ │ ├── ContentProviderStub.java
│ │ │ │ │ │ │ │ ├── SettingsProviderStub.java
│ │ │ │ │ │ │ │ └── VContentProvider.java
│ │ │ │ │ │ │ ├── display
│ │ │ │ │ │ │ └── DisplayManagerStub.java
│ │ │ │ │ │ │ ├── libcore
│ │ │ │ │ │ │ └── OsStub.java
│ │ │ │ │ │ │ ├── location
│ │ │ │ │ │ │ └── LocationManagerStub.java
│ │ │ │ │ │ │ ├── net
│ │ │ │ │ │ │ └── ConnectivityManagerStub.java
│ │ │ │ │ │ │ ├── os
│ │ │ │ │ │ │ ├── DeviceIdentifiersPolicyStub.java
│ │ │ │ │ │ │ ├── UserManagerStub.java
│ │ │ │ │ │ │ └── storage
│ │ │ │ │ │ │ │ └── StorageManagerStub.java
│ │ │ │ │ │ │ ├── pm
│ │ │ │ │ │ │ ├── LauncherAppsStub.java
│ │ │ │ │ │ │ ├── PackageManagerStub.java
│ │ │ │ │ │ │ └── ShortcutManagerStub.java
│ │ │ │ │ │ │ ├── session
│ │ │ │ │ │ │ └── MediaSessionManagerStub.java
│ │ │ │ │ │ │ ├── telephony
│ │ │ │ │ │ │ └── TelephonyManagerStub.java
│ │ │ │ │ │ │ ├── view
│ │ │ │ │ │ │ ├── AutofillManagerStub.java
│ │ │ │ │ │ │ └── GraphicsStatsStub.java
│ │ │ │ │ │ │ └── vm
│ │ │ │ │ │ │ ├── WindowManagerStub.java
│ │ │ │ │ │ │ └── WindowSessionStub.java
│ │ │ │ │ ├── record
│ │ │ │ │ │ └── service
│ │ │ │ │ │ │ └── ServiceRecord.java
│ │ │ │ │ └── stub
│ │ │ │ │ │ ├── StubActivity.java
│ │ │ │ │ │ ├── StubBroadcastReceiver.java
│ │ │ │ │ │ ├── StubContentProvider.java
│ │ │ │ │ │ ├── StubJobService.java
│ │ │ │ │ │ ├── StubService.java
│ │ │ │ │ │ └── record
│ │ │ │ │ │ ├── StubActivityRecord.java
│ │ │ │ │ │ ├── StubBroadcastRecord.java
│ │ │ │ │ │ └── StubServiceRecord.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── ClientConfig.java
│ │ │ │ │ ├── JobRecord.java
│ │ │ │ │ ├── UnbindRecord.java
│ │ │ │ │ └── pm
│ │ │ │ │ │ ├── InstallOption.java
│ │ │ │ │ │ ├── InstallResult.java
│ │ │ │ │ │ ├── InstalledModule.java
│ │ │ │ │ │ ├── InstalledPackage.java
│ │ │ │ │ │ └── XposedConfig.java
│ │ │ │ ├── server
│ │ │ │ │ ├── BProcessManager.java
│ │ │ │ │ ├── BindProvider.java
│ │ │ │ │ ├── BlackBoxSystem.java
│ │ │ │ │ ├── ClientJobServiceManager.java
│ │ │ │ │ ├── ClientServiceManager.java
│ │ │ │ │ ├── DaemonService.java
│ │ │ │ │ ├── ISystemService.java
│ │ │ │ │ ├── ProcessRecord.java
│ │ │ │ │ ├── ServiceManager.java
│ │ │ │ │ ├── am
│ │ │ │ │ │ ├── ActiveServices.java
│ │ │ │ │ │ ├── ActivityRecord.java
│ │ │ │ │ │ ├── ActivityStack.java
│ │ │ │ │ │ ├── BActivityManagerService.java
│ │ │ │ │ │ ├── BJobManagerService.java
│ │ │ │ │ │ ├── TaskRecord.java
│ │ │ │ │ │ └── UserSpace.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
│ │ │ │ │ │ └── installer
│ │ │ │ │ │ │ ├── CopyExecutor.java
│ │ │ │ │ │ │ ├── CreatePackageExecutor.java
│ │ │ │ │ │ │ ├── CreateUserExecutor.java
│ │ │ │ │ │ │ ├── Executor.java
│ │ │ │ │ │ │ ├── RemoveAppExecutor.java
│ │ │ │ │ │ │ └── RemoveUserExecutor.java
│ │ │ │ │ └── user
│ │ │ │ │ │ ├── BUserHandle.java
│ │ │ │ │ │ ├── BUserInfo.java
│ │ │ │ │ │ ├── BUserManagerService.java
│ │ │ │ │ │ └── BUserStatus.java
│ │ │ │ └── utils
│ │ │ │ │ ├── AbiUtils.java
│ │ │ │ │ ├── ArrayUtils.java
│ │ │ │ │ ├── ClassUtils.java
│ │ │ │ │ ├── CloseUtils.java
│ │ │ │ │ ├── ComponentUtils.java
│ │ │ │ │ ├── FileUtils.java
│ │ │ │ │ ├── HackAppUtils.java
│ │ │ │ │ ├── Md5Utils.java
│ │ │ │ │ ├── MethodParameterUtils.java
│ │ │ │ │ ├── NativeUtils.java
│ │ │ │ │ ├── Reflector.java
│ │ │ │ │ ├── ShellUtils.java
│ │ │ │ │ ├── Slog.java
│ │ │ │ │ ├── compat
│ │ │ │ │ ├── ActivityManagerCompat.java
│ │ │ │ │ ├── ApplicationThreadCompat.java
│ │ │ │ │ ├── BuildCompat.java
│ │ │ │ │ ├── BundleCompat.java
│ │ │ │ │ ├── ContentProviderCompat.java
│ │ │ │ │ ├── ObjectsCompat.java
│ │ │ │ │ ├── PackageParserCompat.java
│ │ │ │ │ ├── ParceledListSliceCompat.java
│ │ │ │ │ ├── StartActivityCompat.java
│ │ │ │ │ ├── StrictModeCompat.java
│ │ │ │ │ ├── SystemPropertiesCompat.java
│ │ │ │ │ └── XposedParserCompat.java
│ │ │ │ │ └── provider
│ │ │ │ │ └── ProviderCall.java
│ │ │ │ └── jnihook
│ │ │ │ ├── MethodUtils.java
│ │ │ │ └── jni
│ │ │ │ └── JniHook.java
│ │ ├── jni
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── Hook
│ │ │ │ ├── BaseHook.cpp
│ │ │ │ ├── BaseHook.h
│ │ │ │ ├── BinderHook.cpp
│ │ │ │ ├── BinderHook.h
│ │ │ │ ├── RuntimeHook.cpp
│ │ │ │ ├── RuntimeHook.h
│ │ │ │ ├── UnixFileSystemHook.cpp
│ │ │ │ ├── UnixFileSystemHook.h
│ │ │ │ ├── VMClassLoaderHook.cpp
│ │ │ │ └── VMClassLoaderHook.h
│ │ │ ├── IO.cpp
│ │ │ ├── IO.h
│ │ │ ├── JniHook
│ │ │ │ ├── ArtMethod.h
│ │ │ │ ├── JniHook.cpp
│ │ │ │ └── JniHook.h
│ │ │ ├── Log.h
│ │ │ ├── VmCore.cpp
│ │ │ └── VmCore.h
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ └── filepath.xml
│ └── test
│ │ └── java
│ │ └── top
│ │ └── niunaijun
│ │ └── blackbox
│ │ └── ExampleUnitTest.java
└── xposed
│ ├── .gitignore
│ ├── build.gradle
│ ├── consumer-rules.pro
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ └── java
│ │ └── top
│ │ └── niunaijun
│ │ └── xposed
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ ├── com
│ │ ├── android
│ │ │ ├── dx
│ │ │ │ ├── AnnotationId.java
│ │ │ │ ├── AppDataDirGuesser.java
│ │ │ │ ├── BinaryOp.java
│ │ │ │ ├── Code.java
│ │ │ │ ├── Comparison.java
│ │ │ │ ├── Constants.java
│ │ │ │ ├── DexMaker.java
│ │ │ │ ├── FieldId.java
│ │ │ │ ├── Label.java
│ │ │ │ ├── Local.java
│ │ │ │ ├── MethodId.java
│ │ │ │ ├── TypeId.java
│ │ │ │ ├── TypeList.java
│ │ │ │ ├── UnaryOp.java
│ │ │ │ └── stock
│ │ │ │ │ └── ProxyBuilder.java
│ │ │ └── internal
│ │ │ │ └── util
│ │ │ │ └── XmlUtils.java
│ │ └── swift
│ │ │ └── sandhook
│ │ │ └── xposedcompat
│ │ │ ├── XposedCompat.java
│ │ │ ├── classloaders
│ │ │ └── ProxyClassLoader.java
│ │ │ ├── hookstub
│ │ │ ├── CallOriginCallBack.java
│ │ │ ├── HookMethodEntity.java
│ │ │ ├── HookStubManager.java
│ │ │ ├── MethodHookerStubs32.java
│ │ │ └── MethodHookerStubs64.java
│ │ │ ├── methodgen
│ │ │ ├── DynamicBridge.java
│ │ │ ├── ErrorCatch.java
│ │ │ ├── HookMaker.java
│ │ │ ├── HookerDexMaker.java
│ │ │ └── HookerDexMakerNew.java
│ │ │ └── utils
│ │ │ ├── ApplicationUtils.java
│ │ │ ├── DexLog.java
│ │ │ ├── DexMakerUtils.java
│ │ │ ├── FileUtils.java
│ │ │ └── ProcessUtils.java
│ │ ├── de
│ │ └── robv
│ │ │ └── android
│ │ │ └── xposed
│ │ │ ├── IXposedHookCmdInit.java
│ │ │ ├── IXposedHookInitPackageResources.java
│ │ │ ├── IXposedHookLoadPackage.java
│ │ │ ├── IXposedHookZygoteInit.java
│ │ │ ├── IXposedMod.java
│ │ │ ├── SELinuxHelper.java
│ │ │ ├── XC_MethodHook.java
│ │ │ ├── XC_MethodReplacement.java
│ │ │ ├── XposedBridge.java
│ │ │ ├── XposedHelpers.java
│ │ │ ├── XposedInit.java
│ │ │ ├── callbacks
│ │ │ ├── IXUnhook.java
│ │ │ ├── XC_InitPackageResources.java
│ │ │ ├── XC_LayoutInflated.java
│ │ │ ├── XC_LoadPackage.java
│ │ │ ├── XCallback.java
│ │ │ └── package-info.java
│ │ │ └── services
│ │ │ ├── BaseService.java
│ │ │ ├── DirectAccessService.java
│ │ │ └── FileResult.java
│ │ └── external
│ │ └── org
│ │ └── apache
│ │ └── commons
│ │ └── lang3
│ │ ├── ArrayUtils.java
│ │ ├── CharSequenceUtils.java
│ │ ├── CharUtils.java
│ │ ├── ClassUtils.java
│ │ ├── JavaVersion.java
│ │ ├── ObjectUtils.java
│ │ ├── StringUtils.java
│ │ ├── SystemUtils.java
│ │ ├── Validate.java
│ │ ├── builder
│ │ ├── Builder.java
│ │ ├── CompareToBuilder.java
│ │ ├── EqualsBuilder.java
│ │ ├── HashCodeBuilder.java
│ │ ├── IDKey.java
│ │ ├── ReflectionToStringBuilder.java
│ │ ├── ToStringBuilder.java
│ │ └── ToStringStyle.java
│ │ ├── exception
│ │ └── CloneFailedException.java
│ │ ├── mutable
│ │ ├── Mutable.java
│ │ └── MutableInt.java
│ │ ├── reflect
│ │ ├── MemberUtils.java
│ │ └── MethodUtils.java
│ │ └── tuple
│ │ ├── ImmutablePair.java
│ │ └── Pair.java
│ └── test
│ └── java
│ └── top
│ └── niunaijun
│ └── xposed
│ └── ExampleUnitTest.java
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── top
│ │ └── niunaijun
│ │ └── blackbox
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── top
│ │ │ └── niunaijun
│ │ │ └── blackboxa
│ │ │ ├── App.kt
│ │ │ ├── bean
│ │ │ ├── AppInfo.kt
│ │ │ └── XpModuleInfo.kt
│ │ │ ├── data
│ │ │ ├── AppsRepository.kt
│ │ │ └── XpRepository.kt
│ │ │ ├── util
│ │ │ ├── InjectionUtil.kt
│ │ │ ├── LoadingUtil.kt
│ │ │ ├── ToastEx.kt
│ │ │ └── ViewBindingEx.kt
│ │ │ └── view
│ │ │ ├── apps
│ │ │ ├── AppsAdapter.kt
│ │ │ ├── AppsFactory.kt
│ │ │ ├── AppsFragment.kt
│ │ │ └── AppsViewModel.kt
│ │ │ ├── base
│ │ │ ├── BaseAdapter.kt
│ │ │ └── BaseViewModel.kt
│ │ │ ├── list
│ │ │ ├── ListActivity.kt
│ │ │ ├── ListAdapter.kt
│ │ │ ├── ListFactory.kt
│ │ │ └── ListViewModel.kt
│ │ │ ├── main
│ │ │ ├── MainActivity.kt
│ │ │ ├── ViewPagerAdapter.kt
│ │ │ └── WelcomeActivity.kt
│ │ │ └── xp
│ │ │ ├── XpActivity.kt
│ │ │ ├── XpAdapter.kt
│ │ │ ├── XpFactory.kt
│ │ │ └── XpViewModel.kt
│ └── res
│ │ ├── drawable-anydpi
│ │ ├── ic_add.xml
│ │ └── ic_search.xml
│ │ ├── drawable-hdpi
│ │ ├── ic_add.png
│ │ └── ic_search.png
│ │ ├── drawable-mdpi
│ │ ├── ic_add.png
│ │ └── ic_search.png
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable-xhdpi
│ │ ├── ic_add.png
│ │ └── ic_search.png
│ │ ├── drawable-xxhdpi
│ │ ├── ic_add.png
│ │ └── ic_search.png
│ │ ├── drawable
│ │ ├── ic_empty.xml
│ │ ├── ic_launcher_background.xml
│ │ └── splash.xml
│ │ ├── layout
│ │ ├── activity_list.xml
│ │ ├── activity_main.xml
│ │ ├── activity_xp.xml
│ │ ├── base_empty.xml
│ │ ├── fragment_apps.xml
│ │ ├── item_app.xml
│ │ ├── item_package.xml
│ │ ├── item_viewpager.xml
│ │ ├── item_xp.xml
│ │ ├── view_switch.xml
│ │ └── view_toolbar.xml
│ │ ├── menu
│ │ ├── menu_list.xml
│ │ ├── menu_main.xml
│ │ └── menu_xp.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-night
│ │ └── themes.xml
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ └── network_security_config.xml
│ └── test
│ └── java
│ └── top
│ └── niunaijun
│ └── blackbox
│ └── ExampleUnitTest.kt
├── banner.png
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── virtualm.jks
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/Bcore/src/androidTest/java/top/niunaijun/blackbox/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("top.niunaijun.virtual.test", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/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/IWallpaperManagerCallback.aidl:
--------------------------------------------------------------------------------
1 | /* //device/java/android/android/app/IServiceConnection.aidl
2 | **
3 | ** Copyright 2007, The Android Open Source Project
4 | **
5 | ** Licensed under the Apache License, Version 2.0 (the "License");
6 | ** you may not use this file except in compliance with the License.
7 | ** You may obtain a copy of the License at
8 | **
9 | ** http://www.apache.org/licenses/LICENSE-2.0
10 | **
11 | ** Unless required by applicable law or agreed to in writing, software
12 | ** distributed under the License is distributed on an "AS IS" BASIS,
13 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | ** See the License for the specific language governing permissions and
15 | ** limitations under the License.
16 | */
17 |
18 | package android.app;
19 |
20 | /** @hide */
21 | interface IWallpaperManagerCallback {
22 | void onWallpaperChanged();
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/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;
5 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/android/content/ISyncStatusObserver.aidl:
--------------------------------------------------------------------------------
1 | package android.content;
2 |
3 |
4 | interface ISyncStatusObserver {
5 | void onStatusChanged(int which);
6 | }
7 |
--------------------------------------------------------------------------------
/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/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 |
10 |
--------------------------------------------------------------------------------
/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 | /**
8 | * This method is called when an update occurs to the cursor that is being
9 | * observed. selfUpdate is true if the update was caused by a call to
10 | * commit on the cursor that is being observed.
11 | */
12 | void onChange(boolean selfUpdate, in Uri uri, int userId);
13 | }
14 |
--------------------------------------------------------------------------------
/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 | {
9 | void onLocationChanged(in Location location);
10 | void onStatusChanged(String provider, int status, in Bundle extras);
11 | void onProviderEnabled(String provider);
12 | void onProviderDisabled(String provider);
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 |
8 | NetworkInfo getActiveNetworkInfo();
9 | NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked);
10 |
11 | NetworkInfo getNetworkInfo(int networkType);
12 | NetworkInfo[] getAllNetworkInfo();
13 | boolean isActiveNetworkMetered();
14 | boolean requestRouteToHostAddress(int networkType, int address);
15 | LinkProperties getActiveLinkProperties();
16 | LinkProperties getLinkProperties(int networkType);
17 |
18 | }
--------------------------------------------------------------------------------
/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 | {
8 | Messenger getMessenger();
9 |
10 | Bundle getAvailableChannels(int band);
11 | }
12 |
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/client/IBClient.aidl:
--------------------------------------------------------------------------------
1 | // IVClient.aidl
2 | package top.niunaijun.blackbox.client;
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 |
12 | interface IBClient {
13 | IBinder getActivityThread();
14 | void bindApplication();
15 | void stopService(in ComponentName componentName);
16 | void restartJobService(String selfId);
17 | IBinder acquireContentProviderClient(in ProviderInfo providerInfo);
18 |
19 | IBinder peekService(in Intent intent);
20 | void finishActivity(IBinder token);
21 | void handleNewIntent(IBinder token, in Intent intent);
22 | }
23 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/ClientConfig.aidl:
--------------------------------------------------------------------------------
1 | // ClientConfig.aidl
2 | package top.niunaijun.blackbox.entity;
3 |
4 | // Declare any non-default types here with import statements
5 |
6 | parcelable ClientConfig;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/JobRecord.aidl:
--------------------------------------------------------------------------------
1 | // JobRecord.aidl
2 | package top.niunaijun.blackbox.entity;
3 |
4 | // Declare any non-default types here with import statements
5 |
6 | parcelable JobRecord;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/UnbindRecord.aidl:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox.entity;
2 |
3 | parcelable UnbindRecord;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstallOption.aidl:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox.entity.pm;
2 |
3 | parcelable InstallOption;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstallResult.aidl:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox.entity.pm;
2 |
3 | parcelable InstallResult;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstalledModule.aidl:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox.entity.pm;
2 |
3 | parcelable InstalledModule;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstalledPackage.aidl:
--------------------------------------------------------------------------------
1 | package top.niunaijun.blackbox.entity.pm;
2 |
3 | parcelable InstalledPackage;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/am/IBJobManagerService.aidl:
--------------------------------------------------------------------------------
1 | // IBJobManagerService.aidl
2 | package top.niunaijun.blackbox.server.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 top.niunaijun.blackbox.entity.JobRecord;
10 |
11 | // Declare any non-default types here with import statements
12 |
13 | interface IBJobManagerService {
14 | JobInfo schedule(in JobInfo info, int userId);
15 | JobRecord queryJobRecord(String processName, int jobId, int userId);
16 | void cancelAll(String processName, int userId);
17 | int cancel(String processName, int jobId, int userId);
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/os/IBStorageManagerService.aidl:
--------------------------------------------------------------------------------
1 | // IBStorageManagerService.aidl
2 | package top.niunaijun.blackbox.server.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 |
10 | interface IBStorageManagerService {
11 | StorageVolume[] getVolumeList(int uid, String packageName, int flags, int userId);
12 | Uri getUriForFile(String file);
13 | }
14 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/pm/BPackageSettings.aidl:
--------------------------------------------------------------------------------
1 | // BPackageSettings.aidl
2 | package top.niunaijun.blackbox.server.pm;
3 |
4 | // Declare any non-default types here with import statements
5 |
6 | parcelable BPackageSettings;
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/pm/IBPackageInstallerService.aidl:
--------------------------------------------------------------------------------
1 | // IBPackageInstallerService.aidl
2 | package top.niunaijun.blackbox.server.pm;
3 |
4 | import top.niunaijun.blackbox.server.pm.BPackageSettings;
5 | import top.niunaijun.blackbox.entity.pm.InstallOption;
6 |
7 | // Declare any non-default types here with import statements
8 |
9 | interface IBPackageInstallerService {
10 | int installPackageAsUser(in BPackageSettings file, int userId);
11 | int uninstallPackageAsUser(in BPackageSettings file, boolean removeApp, int userId);
12 | int updatePackage(in BPackageSettings file);
13 | }
14 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/pm/IBXposedManagerService.aidl:
--------------------------------------------------------------------------------
1 | // IBXposedManagerService.aidl
2 |
3 | package top.niunaijun.blackbox.server.pm;
4 |
5 | import java.util.List;
6 | import top.niunaijun.blackbox.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/top/niunaijun/blackbox/server/user/BUserInfo.aidl:
--------------------------------------------------------------------------------
1 | // BUserInfo.aidl
2 | package top.niunaijun.blackbox.server.user;
3 |
4 | // Declare any non-default types here with import statements
5 | parcelable BUserInfo;
6 |
--------------------------------------------------------------------------------
/Bcore/src/main/aidl/top/niunaijun/blackbox/server/user/IBUserManagerService.aidl:
--------------------------------------------------------------------------------
1 | // IBUserManagerService.aidl
2 | package top.niunaijun.blackbox.server.user;
3 |
4 | // Declare any non-default types here with import statements
5 | import top.niunaijun.blackbox.server.user.BUserInfo;
6 | import java.util.List;
7 |
8 |
9 | interface IBUserManagerService {
10 | BUserInfo getUserInfo(int userId);
11 | boolean exists(int userId);
12 | BUserInfo createUser(int userId);
13 | List getUsers();
14 | void deleteUser(int userId);
15 | }
16 |
--------------------------------------------------------------------------------
/Bcore/src/main/assets/junit.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/404nofoundx/BBox/9f7cc12b4a4dead23f590c1da4951ad55a38e6d6/Bcore/src/main/assets/junit.jar
--------------------------------------------------------------------------------
/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 |
8 | public String getProvider() {
9 | return null;
10 | }
11 |
12 |
13 | public static final Creator CREATOR = new Creator() {
14 | @Override
15 | public LocationRequest createFromParcel(Parcel in) {
16 | return null;
17 | }
18 |
19 | @Override
20 | public LocationRequest[] newArray(int size) {
21 | return null;
22 | }
23 | };
24 |
25 | @Override
26 | public int describeContents() {
27 | return 0;
28 | }
29 |
30 | @Override
31 | public void writeToParcel(Parcel dest, int flags) {
32 | }
33 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/MethodParams.java:
--------------------------------------------------------------------------------
1 | package mirror;
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.FIELD})
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface MethodParams {
11 | Class>[] value();
12 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/MethodReflectParams.java:
--------------------------------------------------------------------------------
1 | package mirror;
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.FIELD})
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface MethodReflectParams {
11 | String[] value();
12 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefBoolean.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefBoolean {
6 | private Field field;
7 |
8 | public RefBoolean(Class> cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public boolean get(Object object) {
14 | try {
15 | return this.field.getBoolean(object);
16 | } catch (Exception e) {
17 | return false;
18 | }
19 | }
20 |
21 | public void set(Object obj, boolean value) {
22 | try {
23 | this.field.setBoolean(obj, value);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefDouble.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefDouble {
6 | private Field field;
7 |
8 | public RefDouble(Class cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public double get(Object object) {
14 | try {
15 | return this.field.getDouble(object);
16 | } catch (Exception e) {
17 | return 0;
18 | }
19 | }
20 |
21 | public void set(Object obj, double value) {
22 | try {
23 | this.field.setDouble(obj, value);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefFloat.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefFloat {
6 | private Field field;
7 |
8 | public RefFloat(Class cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public float get(Object object) {
14 | try {
15 | return this.field.getFloat(object);
16 | } catch (Exception e) {
17 | return 0;
18 | }
19 | }
20 |
21 | public void set(Object obj, float value) {
22 | try {
23 | this.field.setFloat(obj, value);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefInt.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefInt {
6 | private Field field;
7 |
8 | public RefInt(Class cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public int get(Object object) {
14 | try {
15 | return this.field.getInt(object);
16 | } catch (Exception e) {
17 | return 0;
18 | }
19 | }
20 |
21 | public void set(Object obj, int intValue) {
22 | try {
23 | this.field.setInt(obj, intValue);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefLong.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefLong {
6 | private Field field;
7 |
8 | public RefLong(Class cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public long get(Object object) {
14 | try {
15 | return this.field.getLong(object);
16 | } catch (Exception e) {
17 | return 0;
18 | }
19 | }
20 |
21 | public void set(Object obj, long value) {
22 | try {
23 | this.field.setLong(obj, value);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefObject.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | @SuppressWarnings("unchecked")
6 | public class RefObject {
7 | private Field field;
8 |
9 | public RefObject(Class> cls, Field field) throws NoSuchFieldException {
10 | this.field = cls.getDeclaredField(field.getName());
11 | this.field.setAccessible(true);
12 | }
13 |
14 | public T get(Object object) {
15 | try {
16 | return (T) this.field.get(object);
17 | } catch (Exception e) {
18 | e.printStackTrace();
19 | return null;
20 | }
21 | }
22 |
23 | public boolean set(Object obj, T value) {
24 | try {
25 | this.field.set(obj, value);
26 | return true;
27 | } catch (Exception e) {
28 | e.printStackTrace();
29 | }
30 | return false;
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefStaticInt.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | public class RefStaticInt {
6 | private Field field;
7 |
8 | public RefStaticInt(Class> cls, Field field) throws NoSuchFieldException {
9 | this.field = cls.getDeclaredField(field.getName());
10 | this.field.setAccessible(true);
11 | }
12 |
13 | public int get() {
14 | try {
15 | return this.field.getInt(null);
16 | } catch (Exception e) {
17 | return 0;
18 | }
19 | }
20 |
21 | public void set(int value) {
22 | try {
23 | this.field.setInt(null, value);
24 | } catch (Exception e) {
25 | //Ignore
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/RefStaticObject.java:
--------------------------------------------------------------------------------
1 | package mirror;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | @SuppressWarnings("unchecked")
6 | public class RefStaticObject {
7 | private Field field;
8 |
9 | public RefStaticObject(Class> cls, Field field) throws NoSuchFieldException {
10 | this.field = cls.getDeclaredField(field.getName());
11 | this.field.setAccessible(true);
12 | }
13 |
14 | public Class> type() {
15 | return field.getType();
16 | }
17 |
18 | public T get() {
19 | T obj = null;
20 | try {
21 | obj = (T) this.field.get(null);
22 | } catch (Exception e) {
23 | //Ignore
24 | }
25 | return obj;
26 | }
27 |
28 | public void set(T obj) {
29 | try {
30 | this.field.set(null, obj);
31 | } catch (Exception e) {
32 | //Ignore
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/android/accounts/IAccountManager.java:
--------------------------------------------------------------------------------
1 | package mirror.android.accounts;
2 |
3 | import android.os.IBinder;
4 | import android.os.IInterface;
5 |
6 | import mirror.RefClass;
7 | import mirror.MethodParams;
8 | import mirror.RefStaticMethod;
9 |
10 | public class IAccountManager {
11 | public static Class> TYPE = RefClass.load(IAccountManager.class, "android.accounts.IAccountManager");
12 |
13 | public static class Stub {
14 | public static Class> TYPE = RefClass.load(Stub.class, "android.accounts.IAccountManager$Stub");
15 | @MethodParams({IBinder.class})
16 | public static RefStaticMethod asInterface;
17 | }
18 | }
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/android/app/ActivityManager.java:
--------------------------------------------------------------------------------
1 | package mirror.android.app;
2 |
3 | import mirror.RefClass;
4 | import mirror.RefStaticInt;
5 |
6 | public class ActivityManager {
7 | public static Class> TYPE = RefClass.load(ActivityManager.class, android.app.ActivityManager.class);
8 | public static RefStaticInt START_SUCCESS;
9 | public static RefStaticInt START_INTENT_NOT_RESOLVED;
10 | public static RefStaticInt START_TASK_TO_FRONT;
11 | public static RefStaticInt START_NOT_CURRENT_USER_ACTIVITY;
12 | }
13 |
--------------------------------------------------------------------------------
/Bcore/src/main/java/mirror/android/app/ActivityManagerNative.java:
--------------------------------------------------------------------------------
1 | package mirror.android.app;
2 |
3 |
4 | import android.os.IInterface;
5 |
6 | import mirror.RefClass;
7 | import mirror.RefStaticObject;
8 | import mirror.RefStaticMethod;
9 |
10 | public class ActivityManagerNative {
11 | public static Class> TYPE = RefClass.load(ActivityManagerNative.class, "android.app.ActivityManagerNative");
12 | public static RefStaticObject