├── .gitignore ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── TencentLocationSDK_v6.1.2_r1df4baaa_170627_1056.jar │ ├── TencentMapSDK_Raster_v_1.2.8_e45bcd0.jar │ ├── TencentMapSearch_v1.1.7.3207904.jar │ ├── armeabi-v7a │ │ ├── libtencentloc.so │ │ └── libyc_nonsdk.so │ ├── armeabi │ │ ├── libtencentloc.so │ │ └── libyc_nonsdk.so │ ├── nonsdklib.jar │ └── x86 │ │ ├── libtencentloc.so │ │ └── libyc_nonsdk.so ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── OaceOaT8w5Xda6wa │ ├── java │ └── io │ │ └── virtualapp │ │ ├── VApp.java │ │ ├── VCommends.java │ │ ├── abs │ │ ├── BasePresenter.java │ │ ├── BaseView.java │ │ ├── Callback.java │ │ ├── Value.java │ │ ├── nestedadapter │ │ │ ├── RecyclerViewAdapterWrapper.java │ │ │ └── SmartRecyclerAdapter.java │ │ ├── percent │ │ │ └── PercentLinearLayout.java │ │ ├── reflect │ │ │ └── ReflectException.java │ │ └── ui │ │ │ ├── BaseAdapterPlus.java │ │ │ ├── VActivity.java │ │ │ ├── VFragment.java │ │ │ └── VUiKit.java │ │ ├── delegate │ │ ├── MyAppRequestListener.java │ │ ├── MyComponentDelegate.java │ │ ├── MyPhoneInfoDelegate.java │ │ └── MyTaskDescriptionDelegate.java │ │ ├── effects │ │ ├── ExplosionAnimator.java │ │ └── ExplosionField.java │ │ ├── home │ │ ├── FlurryROMCollector.java │ │ ├── HomeActivity.java │ │ ├── HomeContract.java │ │ ├── HomePresenterImpl.java │ │ ├── ListAppActivity.java │ │ ├── ListAppContract.java │ │ ├── ListAppFragment.java │ │ ├── ListAppPresenterImpl.java │ │ ├── LoadingActivity.java │ │ ├── adapters │ │ │ ├── AppLocationAdapter.java │ │ │ ├── AppPagerAdapter.java │ │ │ ├── CloneAppListAdapter.java │ │ │ ├── LaunchpadAdapter.java │ │ │ └── decorations │ │ │ │ └── ItemOffsetDecoration.java │ │ ├── location │ │ │ ├── MarkerActivity.java │ │ │ └── VirtualLocationSettings.java │ │ ├── models │ │ │ ├── AddAppButton.java │ │ │ ├── AppData.java │ │ │ ├── AppInfo.java │ │ │ ├── AppInfoLite.java │ │ │ ├── EmptyAppData.java │ │ │ ├── LocationData.java │ │ │ ├── MultiplePackageAppData.java │ │ │ └── PackageAppData.java │ │ ├── platform │ │ │ ├── PlatformInfo.java │ │ │ └── WechatPlatformInfo.java │ │ └── repo │ │ │ ├── AppDataSource.java │ │ │ ├── AppRepository.java │ │ │ └── PackageAppDataStorage.java │ │ ├── splash │ │ └── SplashActivity.java │ │ ├── vs │ │ └── VSManagerActivity.java │ │ └── widgets │ │ ├── BallGridBeatIndicator.java │ │ ├── BallPulseIndicator.java │ │ ├── BaseView.java │ │ ├── CardStackAdapter.java │ │ ├── CardStackLayout.java │ │ ├── CircularAnim.java │ │ ├── DragSelectRecyclerView.java │ │ ├── DragSelectRecyclerViewAdapter.java │ │ ├── EatBeansView.java │ │ ├── Indicator.java │ │ ├── LabelView.java │ │ ├── LauncherIconView.java │ │ ├── LoadingIndicatorView.java │ │ ├── MarqueeTextView.java │ │ ├── MaterialRippleLayout.java │ │ ├── RippleButton.java │ │ ├── ShadowProperty.java │ │ ├── ShadowViewDrawable.java │ │ ├── Shimmer.java │ │ ├── ShimmerViewBase.java │ │ ├── ShimmerViewHelper.java │ │ ├── TwoGearsView.java │ │ ├── ViewHelper.java │ │ └── fittext │ │ ├── BaseTextView.java │ │ ├── FitTextHelper.java │ │ └── FitTextView.java │ └── res │ ├── drawable-hdpi │ ├── ic_add.png │ ├── ic_add_circle.png │ ├── ic_check.png │ ├── ic_crash.png │ ├── ic_menu.png │ ├── ic_no_check.png │ └── ic_shortcut.png │ ├── drawable-xxhdpi │ ├── ic_about.png │ ├── ic_account.png │ ├── ic_device.png │ ├── ic_notification.png │ ├── ic_settings.png │ ├── ic_vs.png │ └── ic_wifi.png │ ├── drawable │ ├── blue_circle.xml │ ├── fab_bg.xml │ ├── home_bg.xml │ ├── icon_bg.xml │ ├── sel_clone_app_btn.xml │ ├── sel_guide_btn.xml │ ├── shape_clone_app_btn.xml │ └── shape_clone_app_btn_pressed.xml │ ├── layout │ ├── activity_clone_app.xml │ ├── activity_home.xml │ ├── activity_install.xml │ ├── activity_loading.xml │ ├── activity_location_settings.xml │ ├── activity_marker.xml │ ├── activity_splash.xml │ ├── activity_users.xml │ ├── content_toolbar.xml │ ├── fragment_list_app.xml │ ├── item_app.xml │ ├── item_clone_app.xml │ ├── item_launcher_app.xml │ ├── item_location_app.xml │ └── item_user.xml │ ├── menu │ ├── marktet_map.xml │ └── user_menu.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-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── fitTextView.xml │ ├── ids.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── lib ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ ├── android │ │ ├── accounts │ │ │ ├── IAccountAuthenticator.aidl │ │ │ ├── IAccountAuthenticatorResponse.aidl │ │ │ └── IAccountManagerResponse.aidl │ │ ├── app │ │ │ ├── IActivityManager │ │ │ │ └── ContentProviderHolder.aidl │ │ │ ├── IServiceConnection.aidl │ │ │ ├── IStopUserCallback.aidl │ │ │ └── job │ │ │ │ ├── IJobCallback.aidl │ │ │ │ └── IJobService.aidl │ │ ├── content │ │ │ ├── IIntentReceiver.aidl │ │ │ ├── ISyncAdapter.aidl │ │ │ ├── ISyncContext.aidl │ │ │ ├── ISyncStatusObserver.aidl │ │ │ └── pm │ │ │ │ ├── IPackageDataObserver.aidl │ │ │ │ ├── IPackageDeleteObserver2.aidl │ │ │ │ ├── IPackageInstallObserver.aidl │ │ │ │ ├── IPackageInstallObserver2.aidl │ │ │ │ ├── IPackageInstallerCallback.aidl │ │ │ │ └── IPackageInstallerSession.aidl │ │ ├── location │ │ │ └── ILocationListener.aidl │ │ └── net │ │ │ ├── IConnectivityManager.aidl │ │ │ └── wifi │ │ │ └── IWifiScanner.aidl │ └── com │ │ └── lody │ │ └── virtual │ │ ├── client │ │ └── IVClient.aidl │ │ ├── os │ │ └── VUserInfo.aidl │ │ ├── remote │ │ ├── AppTaskInfo.aidl │ │ ├── BadgerInfo.aidl │ │ ├── InstallResult.aidl │ │ ├── InstalledAppInfo.aidl │ │ ├── PendingIntentData.aidl │ │ ├── PendingResultData.aidl │ │ ├── Problem.aidl │ │ ├── ReceiverInfo.aidl │ │ ├── VDeviceInfo.aidl │ │ ├── VParceledListSlice.aidl │ │ └── vloc │ │ │ ├── VCell.aidl │ │ │ ├── VLocation.aidl │ │ │ └── VWifi.aidl │ │ └── server │ │ ├── IBinderDelegateService.aidl │ │ ├── IPackageInstaller.aidl │ │ ├── IPackageInstallerSession.aidl │ │ ├── interfaces │ │ ├── IAppRequestListener.aidl │ │ ├── IIntentFilterObserver.aidl │ │ ├── IPackageObserver.aidl │ │ ├── IProcessObserver.aidl │ │ ├── IServiceFetcher.aidl │ │ └── IUiCallback.aidl │ │ └── pm │ │ └── installer │ │ ├── SessionInfo.aidl │ │ └── SessionParams.aidl │ ├── java │ ├── android │ │ ├── content │ │ │ ├── SyncStatusInfo.java │ │ │ └── pm │ │ │ │ └── PackageParser.java │ │ └── location │ │ │ └── LocationRequest.java │ ├── com │ │ └── lody │ │ │ └── virtual │ │ │ ├── Build.java │ │ │ ├── DelegateApplication64Bit.java │ │ │ ├── GmsSupport.java │ │ │ ├── client │ │ │ ├── NativeEngine.java │ │ │ ├── VClientImpl.java │ │ │ ├── badger │ │ │ │ ├── BadgerManager.java │ │ │ │ ├── BroadcastBadger1.java │ │ │ │ ├── BroadcastBadger2.java │ │ │ │ └── IBadger.java │ │ │ ├── core │ │ │ │ ├── CrashHandler.java │ │ │ │ ├── InstallStrategy.java │ │ │ │ ├── InvocationStubManager.java │ │ │ │ └── VirtualCore.java │ │ │ ├── env │ │ │ │ ├── Constants.java │ │ │ │ ├── DeadServerException.java │ │ │ │ ├── GPSStateline.java │ │ │ │ ├── SpecialComponentList.java │ │ │ │ ├── VirtualGPSSatalines.java │ │ │ │ └── VirtualRuntime.java │ │ │ ├── fixer │ │ │ │ ├── ActivityFixer.java │ │ │ │ ├── ComponentFixer.java │ │ │ │ └── ContextFixer.java │ │ │ ├── hook │ │ │ │ ├── base │ │ │ │ │ ├── BinderInvocationProxy.java │ │ │ │ │ ├── BinderInvocationStub.java │ │ │ │ │ ├── Inject.java │ │ │ │ │ ├── LogInvocation.java │ │ │ │ │ ├── MethodBox.java │ │ │ │ │ ├── MethodInvocationProxy.java │ │ │ │ │ ├── MethodInvocationStub.java │ │ │ │ │ ├── MethodProxy.java │ │ │ │ │ ├── ReplaceCallingPkgMethodProxy.java │ │ │ │ │ ├── ReplaceLastPkgMethodProxy.java │ │ │ │ │ ├── ReplaceLastUidMethodProxy.java │ │ │ │ │ ├── ReplaceSequencePkgMethodProxy.java │ │ │ │ │ ├── ReplaceSpecPkgMethodProxy.java │ │ │ │ │ ├── ReplaceUidMethodProxy.java │ │ │ │ │ ├── ResultStaticMethodProxy.java │ │ │ │ │ ├── SkipInject.java │ │ │ │ │ └── StaticMethodProxy.java │ │ │ │ ├── delegate │ │ │ │ │ ├── AppInstrumentation.java │ │ │ │ │ ├── ComponentDelegate.java │ │ │ │ │ ├── InstrumentationDelegate.java │ │ │ │ │ ├── PhoneInfoDelegate.java │ │ │ │ │ └── TaskDescriptionDelegate.java │ │ │ │ ├── providers │ │ │ │ │ ├── DownloadProviderHook.java │ │ │ │ │ ├── ExternalProviderHook.java │ │ │ │ │ ├── InternalProviderHook.java │ │ │ │ │ ├── ProviderHook.java │ │ │ │ │ └── SettingsProviderHook.java │ │ │ │ ├── proxies │ │ │ │ │ ├── account │ │ │ │ │ │ └── AccountManagerStub.java │ │ │ │ │ ├── alarm │ │ │ │ │ │ └── AlarmManagerStub.java │ │ │ │ │ ├── am │ │ │ │ │ │ ├── ActivityManagerStub.java │ │ │ │ │ │ ├── HCallbackStub.java │ │ │ │ │ │ └── MethodProxies.java │ │ │ │ │ ├── appops │ │ │ │ │ │ └── AppOpsManagerStub.java │ │ │ │ │ ├── appwidget │ │ │ │ │ │ └── AppWidgetManagerStub.java │ │ │ │ │ ├── audio │ │ │ │ │ │ └── AudioManagerStub.java │ │ │ │ │ ├── backup │ │ │ │ │ │ └── BackupManagerStub.java │ │ │ │ │ ├── bluetooth │ │ │ │ │ │ └── BluetoothStub.java │ │ │ │ │ ├── clipboard │ │ │ │ │ │ └── ClipBoardStub.java │ │ │ │ │ ├── connectivity │ │ │ │ │ │ └── ConnectivityStub.java │ │ │ │ │ ├── content │ │ │ │ │ │ └── ContentServiceStub.java │ │ │ │ │ ├── context_hub │ │ │ │ │ │ └── ContextHubServiceStub.java │ │ │ │ │ ├── devicepolicy │ │ │ │ │ │ └── DevicePolicyManagerStub.java │ │ │ │ │ ├── display │ │ │ │ │ │ └── DisplayStub.java │ │ │ │ │ ├── dropbox │ │ │ │ │ │ └── DropBoxManagerStub.java │ │ │ │ │ ├── fingerprint │ │ │ │ │ │ └── FingerprintManagerStub.java │ │ │ │ │ ├── graphics │ │ │ │ │ │ └── GraphicsStatsStub.java │ │ │ │ │ ├── imms │ │ │ │ │ │ └── MmsStub.java │ │ │ │ │ ├── input │ │ │ │ │ │ ├── InputMethodManagerStub.java │ │ │ │ │ │ └── MethodProxies.java │ │ │ │ │ ├── isms │ │ │ │ │ │ └── ISmsStub.java │ │ │ │ │ ├── isub │ │ │ │ │ │ └── ISubStub.java │ │ │ │ │ ├── job │ │ │ │ │ │ └── JobServiceStub.java │ │ │ │ │ ├── libcore │ │ │ │ │ │ ├── LibCoreStub.java │ │ │ │ │ │ └── MethodProxies.java │ │ │ │ │ ├── location │ │ │ │ │ │ ├── GPSListenerThread.java │ │ │ │ │ │ ├── GPSStatusListenerThread.java │ │ │ │ │ │ ├── LocationManagerStub.java │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ └── MockLocationHelper.java │ │ │ │ │ ├── media │ │ │ │ │ │ ├── router │ │ │ │ │ │ │ └── MediaRouterServiceStub.java │ │ │ │ │ │ └── session │ │ │ │ │ │ │ └── SessionManagerStub.java │ │ │ │ │ ├── mount │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ └── MountServiceStub.java │ │ │ │ │ ├── network │ │ │ │ │ │ └── NetworkManagementStub.java │ │ │ │ │ ├── notification │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ └── NotificationManagerStub.java │ │ │ │ │ ├── persistent_data_block │ │ │ │ │ │ └── PersistentDataBlockServiceStub.java │ │ │ │ │ ├── phonesubinfo │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ └── PhoneSubInfoStub.java │ │ │ │ │ ├── pm │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ └── PackageManagerStub.java │ │ │ │ │ ├── power │ │ │ │ │ │ └── PowerManagerStub.java │ │ │ │ │ ├── restriction │ │ │ │ │ │ └── RestrictionStub.java │ │ │ │ │ ├── search │ │ │ │ │ │ └── SearchManagerStub.java │ │ │ │ │ ├── shortcut │ │ │ │ │ │ └── ShortcutServiceStub.java │ │ │ │ │ ├── telephony │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ ├── TelephonyRegistryStub.java │ │ │ │ │ │ └── TelephonyStub.java │ │ │ │ │ ├── usage │ │ │ │ │ │ └── UsageStatsManagerStub.java │ │ │ │ │ ├── user │ │ │ │ │ │ └── UserManagerStub.java │ │ │ │ │ ├── vibrator │ │ │ │ │ │ └── VibratorStub.java │ │ │ │ │ ├── view │ │ │ │ │ │ └── AutoFillManagerStub.java │ │ │ │ │ ├── wifi │ │ │ │ │ │ └── WifiManagerStub.java │ │ │ │ │ ├── wifi_scanner │ │ │ │ │ │ ├── GhostWifiScannerImpl.java │ │ │ │ │ │ └── WifiScannerStub.java │ │ │ │ │ └── window │ │ │ │ │ │ ├── MethodProxies.java │ │ │ │ │ │ ├── WindowManagerStub.java │ │ │ │ │ │ └── session │ │ │ │ │ │ ├── BaseMethodProxy.java │ │ │ │ │ │ └── WindowSessionPatch.java │ │ │ │ ├── secondary │ │ │ │ │ ├── HackAppUtils.java │ │ │ │ │ ├── ProxyServiceFactory.java │ │ │ │ │ ├── ServiceConnectionDelegate.java │ │ │ │ │ └── StubBinder.java │ │ │ │ └── utils │ │ │ │ │ └── MethodParameterUtils.java │ │ │ ├── interfaces │ │ │ │ └── IInjector.java │ │ │ ├── ipc │ │ │ │ ├── ActivityClientRecord.java │ │ │ │ ├── LocalProxyUtils.java │ │ │ │ ├── ProviderCall.java │ │ │ │ ├── ServiceManagerNative.java │ │ │ │ ├── VAccountManager.java │ │ │ │ ├── VActivityManager.java │ │ │ │ ├── VDeviceManager.java │ │ │ │ ├── VJobScheduler.java │ │ │ │ ├── VNotificationManager.java │ │ │ │ ├── VPackageManager.java │ │ │ │ ├── VirtualLocationManager.java │ │ │ │ └── VirtualStorageManager.java │ │ │ ├── natives │ │ │ │ └── NativeMethods.java │ │ │ └── stub │ │ │ │ ├── AmsTask.java │ │ │ │ ├── ChooseAccountTypeActivity.java │ │ │ │ ├── ChooseTypeAndAccountActivity.java │ │ │ │ ├── ChooserActivity.java │ │ │ │ ├── DaemonService.java │ │ │ │ ├── ResolverActivity.java │ │ │ │ ├── ShortcutHandleActivity.java │ │ │ │ ├── StubActivity.java │ │ │ │ ├── StubContentProvider.java │ │ │ │ ├── StubDialog.java │ │ │ │ ├── StubJob.java │ │ │ │ ├── StubPendingActivity.java │ │ │ │ ├── StubPendingReceiver.java │ │ │ │ ├── StubPendingService.java │ │ │ │ └── VASettings.java │ │ │ ├── helper │ │ │ ├── ArtDexOptimizer.java │ │ │ ├── ParcelHelper.java │ │ │ ├── PersistenceLayer.java │ │ │ ├── collection │ │ │ │ ├── ArrayMap.java │ │ │ │ ├── ArraySet.java │ │ │ │ ├── ContainerHelpers.java │ │ │ │ ├── IntArray.java │ │ │ │ ├── MapCollections.java │ │ │ │ ├── SimpleArrayMap.java │ │ │ │ └── SparseArray.java │ │ │ ├── compat │ │ │ │ ├── AccountManagerCompat.java │ │ │ │ ├── ActivityManagerCompat.java │ │ │ │ ├── ApplicationThreadCompat.java │ │ │ │ ├── BuildCompat.java │ │ │ │ ├── BundleCompat.java │ │ │ │ ├── ContentProviderCompat.java │ │ │ │ ├── ContentResolverCompat.java │ │ │ │ ├── IApplicationThreadCompat.java │ │ │ │ ├── NativeLibraryHelperCompat.java │ │ │ │ ├── ObjectsCompat.java │ │ │ │ ├── PackageParserCompat.java │ │ │ │ ├── ParceledListSliceCompat.java │ │ │ │ ├── StorageManagerCompat.java │ │ │ │ └── SystemPropertiesCompat.java │ │ │ ├── ipcbus │ │ │ │ ├── IPCBus.java │ │ │ │ ├── IPCInvocationBridge.java │ │ │ │ ├── IPCMethod.java │ │ │ │ ├── IPCSingleton.java │ │ │ │ ├── IServerCache.java │ │ │ │ ├── ServerInterface.java │ │ │ │ └── TransformBinder.java │ │ │ └── utils │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── AtomicFile.java │ │ │ │ ├── BitmapUtils.java │ │ │ │ ├── ClassUtils.java │ │ │ │ ├── ComponentUtils.java │ │ │ │ ├── DrawableUtils.java │ │ │ │ ├── FastXmlSerializer.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── MD5Utils.java │ │ │ │ ├── OSUtils.java │ │ │ │ ├── Reflect.java │ │ │ │ ├── ReflectException.java │ │ │ │ ├── SchedulerTask.java │ │ │ │ ├── Singleton.java │ │ │ │ ├── VLog.java │ │ │ │ ├── XmlSerializerAndParser.java │ │ │ │ └── marks │ │ │ │ ├── FakeDeviceMark.java │ │ │ │ └── FakeLocMark.java │ │ │ ├── os │ │ │ ├── VBinder.java │ │ │ ├── VEnvironment.java │ │ │ ├── VUserHandle.java │ │ │ ├── VUserInfo.java │ │ │ └── VUserManager.java │ │ │ ├── remote │ │ │ ├── AppTaskInfo.java │ │ │ ├── BadgerInfo.java │ │ │ ├── InstallResult.java │ │ │ ├── InstalledAppInfo.java │ │ │ ├── PendingIntentData.java │ │ │ ├── PendingResultData.java │ │ │ ├── Problem.java │ │ │ ├── ReceiverInfo.java │ │ │ ├── StubActivityRecord.java │ │ │ ├── SyncInfo.java │ │ │ ├── VDeviceInfo.java │ │ │ ├── VParceledListSlice.java │ │ │ └── vloc │ │ │ │ ├── VCell.java │ │ │ │ ├── VLocation.java │ │ │ │ └── VWifi.java │ │ │ └── server │ │ │ ├── BinderProvider.java │ │ │ ├── ServiceCache.java │ │ │ ├── accounts │ │ │ ├── RegisteredServicesParser.java │ │ │ ├── VAccount.java │ │ │ ├── VAccountManagerService.java │ │ │ ├── VContentService.java │ │ │ └── VSyncRecord.java │ │ │ ├── am │ │ │ ├── ActivityRecord.java │ │ │ ├── ActivityStack.java │ │ │ ├── AppBindRecord.java │ │ │ ├── AttributeCache.java │ │ │ ├── BroadcastSystem.java │ │ │ ├── ConnectionRecord.java │ │ │ ├── PendingIntents.java │ │ │ ├── ProcessMap.java │ │ │ ├── ProcessRecord.java │ │ │ ├── ServiceRecord.java │ │ │ ├── TaskRecord.java │ │ │ ├── UidSystem.java │ │ │ └── VActivityManagerService.java │ │ │ ├── device │ │ │ ├── DeviceInfoPersistenceLayer.java │ │ │ └── VDeviceManagerService.java │ │ │ ├── interfaces │ │ │ ├── IAccountManager.java │ │ │ ├── IActivityManager.java │ │ │ ├── IAppManager.java │ │ │ ├── IDeviceInfoManager.java │ │ │ ├── IJobService.java │ │ │ ├── INotificationManager.java │ │ │ ├── IPackageManager.java │ │ │ ├── IUserManager.java │ │ │ ├── IVirtualLocationManager.java │ │ │ └── IVirtualStorageService.java │ │ │ ├── job │ │ │ └── VJobSchedulerService.java │ │ │ ├── location │ │ │ └── VirtualLocationService.java │ │ │ ├── memory │ │ │ ├── MappedMemoryRegion.java │ │ │ ├── MemoryRegionParser.java │ │ │ ├── MemoryScanEngine.java │ │ │ ├── MemoryValue.java │ │ │ └── ProcessMemory.java │ │ │ ├── notification │ │ │ ├── NotificationCompat.java │ │ │ ├── NotificationCompatCompatV14.java │ │ │ ├── NotificationCompatCompatV21.java │ │ │ ├── NotificationFixer.java │ │ │ ├── PendIntentCompat.java │ │ │ ├── ReflectionActionCompat.java │ │ │ ├── RemoteViewsFixer.java │ │ │ ├── VNotificationManagerService.java │ │ │ └── WidthCompat.java │ │ │ ├── pm │ │ │ ├── FastImmutableArraySet.java │ │ │ ├── IntentResolver.java │ │ │ ├── PackageCacheManager.java │ │ │ ├── PackagePersistenceLayer.java │ │ │ ├── PackageSetting.java │ │ │ ├── PackageUserState.java │ │ │ ├── PrivilegeAppOptimizer.java │ │ │ ├── ProviderIntentResolver.java │ │ │ ├── VAppManagerService.java │ │ │ ├── VPackageManagerService.java │ │ │ ├── VUserManagerService.java │ │ │ ├── installer │ │ │ │ ├── FileBridge.java │ │ │ │ ├── PackageHelper.java │ │ │ │ ├── PackageInstallInfo.java │ │ │ │ ├── PackageInstallObserver.java │ │ │ │ ├── PackageInstallerSession.java │ │ │ │ ├── SessionInfo.java │ │ │ │ ├── SessionParams.java │ │ │ │ └── VPackageInstallerService.java │ │ │ └── parser │ │ │ │ ├── PackageParserEx.java │ │ │ │ └── VPackage.java │ │ │ ├── secondary │ │ │ ├── BinderDelegateService.java │ │ │ └── FakeIdentityBinder.java │ │ │ └── vs │ │ │ ├── VSConfig.java │ │ │ ├── VSPersistenceLayer.java │ │ │ └── VirtualStorageService.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 │ │ │ ├── ActivityManagerNative.java │ │ │ ├── ActivityManagerOreo.java │ │ │ ├── ActivityThread.java │ │ │ ├── ActivityThreadNMR1.java │ │ │ ├── ApplicationThreadNative.java │ │ │ ├── ContextImpl.java │ │ │ ├── ContextImplICS.java │ │ │ ├── ContextImplKitkat.java │ │ │ ├── IActivityManager.java │ │ │ ├── IActivityManagerICS.java │ │ │ ├── IActivityManagerL.java │ │ │ ├── IActivityManagerN.java │ │ │ ├── IAlarmManager.java │ │ │ ├── IApplicationThread.java │ │ │ ├── IApplicationThreadICSMR1.java │ │ │ ├── IApplicationThreadJBMR1.java │ │ │ ├── IApplicationThreadKitkat.java │ │ │ ├── IApplicationThreadOreo.java │ │ │ ├── ISearchManager.java │ │ │ ├── IServiceConnectionO.java │ │ │ ├── IUsageStatsManager.java │ │ │ ├── LoadedApk.java │ │ │ ├── LoadedApkHuaWei.java │ │ │ ├── LoadedApkICS.java │ │ │ ├── LoadedApkKitkat.java │ │ │ ├── Notification.java │ │ │ ├── NotificationL.java │ │ │ ├── NotificationM.java │ │ │ ├── NotificationManager.java │ │ │ ├── PendingIntentJBMR2.java │ │ │ ├── ServiceStartArgs.java │ │ │ ├── admin │ │ │ │ └── IDevicePolicyManager.java │ │ │ ├── backup │ │ │ │ └── IBackupManager.java │ │ │ └── job │ │ │ │ ├── IJobScheduler.java │ │ │ │ ├── JobInfo.java │ │ │ │ ├── JobParameters.java │ │ │ │ └── JobWorkItem.java │ │ ├── bluetooth │ │ │ ├── IBluetooth.java │ │ │ └── IBluetoothManager.java │ │ ├── content │ │ │ ├── BroadcastReceiver.java │ │ │ ├── ClipboardManager.java │ │ │ ├── ClipboardManagerOreo.java │ │ │ ├── ContentProviderClient.java │ │ │ ├── ContentProviderHolderOreo.java │ │ │ ├── ContentProviderNative.java │ │ │ ├── ContentResolver.java │ │ │ ├── ContentResolverJBMR2.java │ │ │ ├── IClipboard.java │ │ │ ├── IContentProvider.java │ │ │ ├── IContentService.java │ │ │ ├── IIntentReceiver.java │ │ │ ├── IIntentReceiverJB.java │ │ │ ├── IRestrictionsManager.java │ │ │ ├── IntentFilter.java │ │ │ ├── SyncAdapterType.java │ │ │ ├── SyncAdapterTypeN.java │ │ │ ├── SyncInfo.java │ │ │ ├── SyncRequest.java │ │ │ ├── pm │ │ │ │ ├── ApplicationInfoL.java │ │ │ │ ├── ApplicationInfoN.java │ │ │ │ ├── ILauncherApps.java │ │ │ │ ├── IShortcutService.java │ │ │ │ ├── LauncherApps.java │ │ │ │ ├── PackageInstaller.java │ │ │ │ ├── PackageParser.java │ │ │ │ ├── PackageParserJellyBean.java │ │ │ │ ├── PackageParserJellyBean17.java │ │ │ │ ├── PackageParserLollipop.java │ │ │ │ ├── PackageParserLollipop22.java │ │ │ │ ├── PackageParserMarshmallow.java │ │ │ │ ├── PackageParserNougat.java │ │ │ │ ├── PackageParserP.java │ │ │ │ ├── PackageUserState.java │ │ │ │ ├── ParceledListSlice.java │ │ │ │ ├── ParceledListSliceJBMR2.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 │ │ ├── location │ │ │ ├── ILocationListener.java │ │ │ ├── ILocationManager.java │ │ │ ├── LocationManager.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 │ │ │ │ ├── WifiScanner.java │ │ │ │ └── WifiSsid.java │ │ ├── os │ │ │ ├── BaseBundle.java │ │ │ ├── Build.java │ │ │ ├── Bundle.java │ │ │ ├── BundleICS.java │ │ │ ├── Handler.java │ │ │ ├── INetworkManagementService.java │ │ │ ├── IPowerManager.java │ │ │ ├── IUserManager.java │ │ │ ├── Message.java │ │ │ ├── Process.java │ │ │ ├── ServiceManager.java │ │ │ ├── StrictMode.java │ │ │ ├── mount │ │ │ │ └── IMountService.java │ │ │ └── storage │ │ │ │ └── IStorageManager.java │ │ ├── providers │ │ │ └── Settings.java │ │ ├── renderscript │ │ │ └── RenderScriptCacheDir.java │ │ ├── rms │ │ │ └── resource │ │ │ │ ├── ReceiverResourceLP.java │ │ │ │ ├── ReceiverResourceM.java │ │ │ │ └── ReceiverResourceN.java │ │ ├── service │ │ │ └── persistentdata │ │ │ │ └── IPersistentDataBlockService.java │ │ ├── telephony │ │ │ ├── CellIdentityCdma.java │ │ │ ├── CellIdentityGsm.java │ │ │ ├── CellInfoCdma.java │ │ │ ├── CellInfoGsm.java │ │ │ ├── CellSignalStrengthCdma.java │ │ │ ├── CellSignalStrengthGsm.java │ │ │ └── NeighboringCellInfo.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 │ │ ├── webkit │ │ │ ├── IWebViewUpdateService.java │ │ │ └── WebViewFactory.java │ │ └── widget │ │ │ ├── RemoteViews.java │ │ │ └── Toast.java │ │ ├── com │ │ └── android │ │ │ └── internal │ │ │ ├── R_Hide.java │ │ │ ├── app │ │ │ └── IAppOpsService.java │ │ │ ├── appwidget │ │ │ └── IAppWidgetService.java │ │ │ ├── content │ │ │ ├── NativeLibraryHelper.java │ │ │ └── ReferrerIntent.java │ │ │ ├── os │ │ │ ├── IDropBoxManagerService.java │ │ │ ├── IVibratorService.java │ │ │ └── UserManager.java │ │ │ ├── policy │ │ │ └── PhoneWindow.java │ │ │ ├── telephony │ │ │ ├── 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 │ │ └── lang │ │ │ ├── ThreadGroup.java │ │ │ └── ThreadGroupN.java │ │ └── libcore │ │ └── io │ │ ├── ForwardingOs.java │ │ ├── Libcore.java │ │ └── Os.java │ ├── jni │ ├── Android.mk │ ├── Application.mk │ ├── Foundation │ │ ├── IOUniformer.cpp │ │ ├── IOUniformer.h │ │ ├── Path.cpp │ │ ├── Path.h │ │ ├── SandboxFs.cpp │ │ ├── SandboxFs.h │ │ ├── SymbolFinder.cpp │ │ ├── SymbolFinder.h │ │ ├── VMPatch.cpp │ │ └── VMPatch.h │ ├── HookZz │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── Android.mk │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── docs │ │ │ ├── HookFrameworkDesign.md │ │ │ ├── hookzz-docs.md │ │ │ ├── hookzz-example.md │ │ │ └── hookzz-getting-started.md │ │ ├── include │ │ │ └── hookzz.h │ │ ├── src │ │ │ ├── allocator.c │ │ │ ├── allocator.h │ │ │ ├── interceptor.c │ │ │ ├── interceptor.h │ │ │ ├── memory.c │ │ │ ├── memory.h │ │ │ ├── platforms │ │ │ │ ├── arch-arm │ │ │ │ │ ├── instructions.c │ │ │ │ │ ├── instructions.h │ │ │ │ │ ├── reader-arm.c │ │ │ │ │ ├── reader-arm.h │ │ │ │ │ ├── reader-thumb.c │ │ │ │ │ ├── reader-thumb.h │ │ │ │ │ ├── regs-arm.c │ │ │ │ │ ├── regs-arm.h │ │ │ │ │ ├── relocator-arm.c │ │ │ │ │ ├── relocator-arm.h │ │ │ │ │ ├── relocator-thumb.c │ │ │ │ │ ├── relocator-thumb.h │ │ │ │ │ ├── writer-arm.c │ │ │ │ │ ├── writer-arm.h │ │ │ │ │ ├── writer-thumb.c │ │ │ │ │ └── writer-thumb.h │ │ │ │ ├── arch-arm64 │ │ │ │ │ ├── instructions.c │ │ │ │ │ ├── instructions.h │ │ │ │ │ ├── reader-arm64.c │ │ │ │ │ ├── reader-arm64.h │ │ │ │ │ ├── regs-arm64.c │ │ │ │ │ ├── regs-arm64.h │ │ │ │ │ ├── relocator-arm64.c │ │ │ │ │ ├── relocator-arm64.h │ │ │ │ │ ├── writer-arm64.c │ │ │ │ │ └── writer-arm64.h │ │ │ │ ├── arch-x86 │ │ │ │ │ ├── instructions.c │ │ │ │ │ ├── instructions.h │ │ │ │ │ ├── reader-x86.c │ │ │ │ │ ├── reader-x86.h │ │ │ │ │ ├── regs-x86.c │ │ │ │ │ ├── regs-x86.h │ │ │ │ │ ├── relocator-x86.c │ │ │ │ │ ├── relocator-x86.h │ │ │ │ │ ├── writer-x86.c │ │ │ │ │ └── writer-x86.h │ │ │ │ ├── backend-arm │ │ │ │ │ ├── interceptor-arm.c │ │ │ │ │ ├── interceptor-arm.h │ │ │ │ │ ├── interceptor-template-arm.s │ │ │ │ │ ├── thunker-arm.c │ │ │ │ │ └── thunker-arm.h │ │ │ │ ├── backend-arm64 │ │ │ │ │ ├── interceptor-arm64.c │ │ │ │ │ ├── interceptor-arm64.h │ │ │ │ │ ├── interceptor-template-arm64.s │ │ │ │ │ ├── thunker-arm64.c │ │ │ │ │ └── thunker-arm64.h │ │ │ │ ├── backend-darwin │ │ │ │ │ ├── memory-darwin.c │ │ │ │ │ └── memory-darwin.h │ │ │ │ ├── backend-linux │ │ │ │ │ ├── memory-linux.c │ │ │ │ │ └── memory-linux.h │ │ │ │ ├── backend-posix │ │ │ │ │ ├── thread-posix.c │ │ │ │ │ └── thread-posix.h │ │ │ │ ├── backend-x86 │ │ │ │ │ ├── interceptor-template-x86.s │ │ │ │ │ ├── interceptor-x86.c │ │ │ │ │ ├── interceptor-x86.h │ │ │ │ │ ├── thunker-x86.c │ │ │ │ │ └── thunker-x86.h │ │ │ │ └── x86 │ │ │ │ │ ├── instructions.h │ │ │ │ │ ├── reader.c │ │ │ │ │ ├── reader.h │ │ │ │ │ ├── writer.c │ │ │ │ │ └── writer.h │ │ │ ├── relocator.h │ │ │ ├── stack.c │ │ │ ├── stack.h │ │ │ ├── thread.h │ │ │ ├── thunker.h │ │ │ ├── trampoline.c │ │ │ ├── trampoline.h │ │ │ ├── writer.h │ │ │ ├── zzdefs.h │ │ │ ├── zzdeps │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── common │ │ │ │ │ ├── LEB128.h │ │ │ │ │ ├── debugbreak.h │ │ │ │ │ ├── memory-utils-common.c │ │ │ │ │ └── memory-utils-common.h │ │ │ │ ├── darwin │ │ │ │ │ ├── mach_vm.h │ │ │ │ │ ├── macho-utils-darwin.c │ │ │ │ │ ├── macho-utils-darwin.h │ │ │ │ │ ├── memory-utils-darwin.c │ │ │ │ │ └── memory-utils-darwin.h │ │ │ │ ├── linux │ │ │ │ │ ├── memory-utils-linux.c │ │ │ │ │ └── memory-utils-linux.h │ │ │ │ ├── memory-utils.h │ │ │ │ ├── posix │ │ │ │ │ ├── memory-utils-posix.c │ │ │ │ │ ├── memory-utils-posix.h │ │ │ │ │ ├── thread-utils-posix.c │ │ │ │ │ └── thread-utils-posix.h │ │ │ │ └── zz.h │ │ │ ├── zzinfo.c │ │ │ └── zzinfo.h │ │ ├── tests │ │ │ ├── arm-android │ │ │ │ ├── makefile │ │ │ │ ├── test_hook_address_thumb.c │ │ │ │ ├── test_hook_open_arm.c │ │ │ │ └── test_hook_printf.c │ │ │ ├── arm-insn-fix │ │ │ │ ├── makefile │ │ │ │ └── test_insn_fix.c │ │ │ ├── arm-ios │ │ │ │ ├── makefile │ │ │ │ ├── test_hook_address_thumb.c │ │ │ │ ├── test_hook_freeaddr.c │ │ │ │ ├── test_hook_oc_thumb.m │ │ │ │ ├── test_hook_open_arm.c │ │ │ │ └── test_hook_printf.c │ │ │ ├── arm64-insn-fix │ │ │ │ ├── makefile │ │ │ │ └── test_insn_fix.c │ │ │ └── arm64-ios │ │ │ │ ├── makefile │ │ │ │ ├── test_hook_address.c │ │ │ │ ├── test_hook_oc.m │ │ │ │ └── test_hook_printf.c │ │ └── tools │ │ │ └── ZzSolidifyHook │ │ │ ├── solidifyhook │ │ │ ├── solidifyhook.cpp │ │ │ └── solidifytrampoline.c │ ├── Jni │ │ ├── Helper.h │ │ ├── VAJni.cpp │ │ └── VAJni.h │ ├── Substrate │ │ ├── Buffer.hpp │ │ ├── CydiaSubstrate.h │ │ ├── SubstrateARM.hpp │ │ ├── SubstrateDebug.cpp │ │ ├── SubstrateDebug.hpp │ │ ├── SubstrateHook.cpp │ │ ├── SubstrateHook.h │ │ ├── SubstrateLog.hpp │ │ ├── SubstratePosixMemory.cpp │ │ ├── SubstrateX86.hpp │ │ ├── hde64.c │ │ ├── hde64.h │ │ └── table64.h │ └── fb │ │ ├── Android.mk │ │ ├── BUCK │ │ ├── Doxyfile │ │ ├── assert.cpp │ │ ├── include │ │ ├── fb │ │ │ ├── ALog.h │ │ │ ├── Build.h │ │ │ ├── Countable.h │ │ │ ├── Doxyfile │ │ │ ├── Environment.h │ │ │ ├── ProgramLocation.h │ │ │ ├── RefPtr.h │ │ │ ├── StaticInitialized.h │ │ │ ├── ThreadLocal.h │ │ │ ├── assert.h │ │ │ ├── fbjni.h │ │ │ ├── fbjni │ │ │ │ ├── Boxed.h │ │ │ │ ├── ByteBuffer.h │ │ │ │ ├── Common.h │ │ │ │ ├── Context.h │ │ │ │ ├── CoreClasses-inl.h │ │ │ │ ├── CoreClasses.h │ │ │ │ ├── Exceptions.h │ │ │ │ ├── File.h │ │ │ │ ├── Hybrid.h │ │ │ │ ├── Iterator-inl.h │ │ │ │ ├── Iterator.h │ │ │ │ ├── JThread.h │ │ │ │ ├── JWeakReference.h │ │ │ │ ├── Meta-forward.h │ │ │ │ ├── Meta-inl.h │ │ │ │ ├── Meta.h │ │ │ │ ├── MetaConvert.h │ │ │ │ ├── NativeRunnable.h │ │ │ │ ├── ReferenceAllocators-inl.h │ │ │ │ ├── ReferenceAllocators.h │ │ │ │ ├── References-forward.h │ │ │ │ ├── References-inl.h │ │ │ │ ├── References.h │ │ │ │ ├── Registration-inl.h │ │ │ │ ├── Registration.h │ │ │ │ └── TypeTraits.h │ │ │ ├── log.h │ │ │ ├── lyra.h │ │ │ ├── noncopyable.h │ │ │ ├── nonmovable.h │ │ │ └── visibility.h │ │ └── jni │ │ │ ├── Countable.h │ │ │ ├── GlobalReference.h │ │ │ ├── JniTerminateHandler.h │ │ │ ├── LocalReference.h │ │ │ ├── LocalString.h │ │ │ ├── Registration.h │ │ │ ├── WeakReference.h │ │ │ └── jni_helpers.h │ │ ├── jni │ │ ├── ByteBuffer.cpp │ │ ├── Countable.cpp │ │ ├── Environment.cpp │ │ ├── Exceptions.cpp │ │ ├── Hybrid.cpp │ │ ├── LocalString.cpp │ │ ├── OnLoad.cpp │ │ ├── References.cpp │ │ ├── WeakReference.cpp │ │ ├── android │ │ │ ├── CpuCapabilities.cpp │ │ │ └── ReferenceChecking.cpp │ │ ├── fbjni.cpp │ │ ├── java │ │ │ ├── BUCK │ │ │ ├── CppException.java │ │ │ ├── CppSystemErrorException.java │ │ │ └── UnknownCppException.java │ │ └── jni_helpers.cpp │ │ ├── log.cpp │ │ ├── lyra │ │ └── lyra.cpp │ │ └── onload.cpp │ └── res │ ├── layout │ ├── app_not_authorized.xml │ ├── choose_account_row.xml │ ├── choose_account_type.xml │ ├── choose_type_and_account.xml │ ├── custom_notification.xml │ ├── custom_notification_lite.xml │ └── resolve_list_item.xml │ └── values │ ├── dimens.xml │ ├── integer.xml │ ├── strings.xml │ └── styles.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .idea 7 | .DS_Store 8 | /build 9 | /captures 10 | gradlew.bat 11 | gradlew 12 | gradle/ 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VirtualAppEx 2 | VirtualApp 9.0适配\ 3 | 仅供个人学习使用\ 4 | \ 5 | 若您有其他用途,请去这里https://github.com/asLody/VirtualApp 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/libs/TencentLocationSDK_v6.1.2_r1df4baaa_170627_1056.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/TencentLocationSDK_v6.1.2_r1df4baaa_170627_1056.jar -------------------------------------------------------------------------------- /app/libs/TencentMapSDK_Raster_v_1.2.8_e45bcd0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/TencentMapSDK_Raster_v_1.2.8_e45bcd0.jar -------------------------------------------------------------------------------- /app/libs/TencentMapSearch_v1.1.7.3207904.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/TencentMapSearch_v1.1.7.3207904.jar -------------------------------------------------------------------------------- /app/libs/armeabi-v7a/libtencentloc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/armeabi-v7a/libtencentloc.so -------------------------------------------------------------------------------- /app/libs/armeabi-v7a/libyc_nonsdk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/armeabi-v7a/libyc_nonsdk.so -------------------------------------------------------------------------------- /app/libs/armeabi/libtencentloc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/armeabi/libtencentloc.so -------------------------------------------------------------------------------- /app/libs/armeabi/libyc_nonsdk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/armeabi/libyc_nonsdk.so -------------------------------------------------------------------------------- /app/libs/nonsdklib.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/nonsdklib.jar -------------------------------------------------------------------------------- /app/libs/x86/libtencentloc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/x86/libtencentloc.so -------------------------------------------------------------------------------- /app/libs/x86/libyc_nonsdk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/libs/x86/libyc_nonsdk.so -------------------------------------------------------------------------------- /app/src/main/assets/OaceOaT8w5Xda6wa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/assets/OaceOaT8w5Xda6wa -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/VCommends.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class VCommends { 7 | 8 | public static final String TAG_NEW_VERSION = "First launch new Version"; 9 | public static final String TAG_SHOW_ADD_APP_GUIDE = "Should show add app guide"; 10 | 11 | public static final int REQUEST_SELECT_APP = 5; 12 | 13 | public static final String EXTRA_APP_INFO_LIST = "va.extra.APP_INFO_LIST"; 14 | 15 | public static final String TAG_ASK_INSTALL_GMS = "va.extra.ASK_INSTALL_GMS"; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public interface BasePresenter { 7 | void start(); 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/BaseView.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | public interface BaseView { 10 | Activity getActivity(); 11 | Context getContext(); 12 | void setPresenter(T presenter); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/Callback.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public interface Callback { 8 | void callback(T result); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/Value.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class Value { 8 | public T val; 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/reflect/ReflectException.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs.reflect; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class ReflectException extends RuntimeException { 7 | 8 | private static final long serialVersionUID = 663038727503637969L; 9 | 10 | public ReflectException(Throwable cause) { 11 | super(cause); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/ui/VFragment.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs.ui; 2 | 3 | import org.jdeferred.android.AndroidDeferredManager; 4 | 5 | import android.app.Activity; 6 | import android.support.v4.app.Fragment; 7 | 8 | import io.virtualapp.abs.BasePresenter; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | public class VFragment extends Fragment { 14 | 15 | protected T mPresenter; 16 | 17 | public T getPresenter() { 18 | return mPresenter; 19 | } 20 | 21 | public void setPresenter(T presenter) { 22 | this.mPresenter = presenter; 23 | } 24 | 25 | protected AndroidDeferredManager defer() { 26 | return VUiKit.defer(); 27 | } 28 | 29 | public void finishActivity() { 30 | Activity activity = getActivity(); 31 | if (activity != null) { 32 | activity.finish(); 33 | } 34 | } 35 | 36 | public void destroy() { 37 | finishActivity(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/delegate/MyPhoneInfoDelegate.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.delegate; 2 | 3 | import com.lody.virtual.client.hook.delegate.PhoneInfoDelegate; 4 | 5 | 6 | /** 7 | * Fake the Device ID. 8 | */ 9 | public class MyPhoneInfoDelegate implements PhoneInfoDelegate { 10 | 11 | @Override 12 | public String getDeviceId(String oldDeviceId, int userId) { 13 | return oldDeviceId; 14 | } 15 | 16 | @Override 17 | public String getBluetoothAddress(String oldAddress, int userId) { 18 | return oldAddress; 19 | } 20 | 21 | @Override 22 | public String getMacAddress(String oldAddress, int userId) { 23 | return oldAddress; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/ListAppContract.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home; 2 | 3 | import java.util.List; 4 | 5 | import io.virtualapp.abs.BasePresenter; 6 | import io.virtualapp.abs.BaseView; 7 | import io.virtualapp.home.models.AppInfo; 8 | 9 | /** 10 | * @author Lody 11 | * @version 1.0 12 | */ 13 | /*package*/ class ListAppContract { 14 | interface ListAppView extends BaseView { 15 | 16 | void startLoading(); 17 | 18 | void loadFinish(List infoList); 19 | } 20 | 21 | interface ListAppPresenter extends BasePresenter { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/models/AppData.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.models; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public interface AppData { 10 | 11 | boolean isLoading(); 12 | 13 | boolean isFirstOpen(); 14 | 15 | Drawable getIcon(); 16 | 17 | String getName(); 18 | 19 | boolean canReorder(); 20 | 21 | boolean canLaunch(); 22 | 23 | boolean canDelete(); 24 | 25 | boolean canCreateShortcut(); 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/models/AppInfo.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.models; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class AppInfo { 10 | public String packageName; 11 | public String path; 12 | public boolean fastOpen; 13 | public Drawable icon; 14 | public CharSequence name; 15 | public int cloneCount; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/platform/PlatformInfo.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.platform; 2 | 3 | import android.content.pm.PackageInfo; 4 | 5 | import java.util.Collections; 6 | import java.util.HashSet; 7 | import java.util.Set; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | public abstract class PlatformInfo { 13 | 14 | private final Set platformPkgs = new HashSet<>(); 15 | 16 | public PlatformInfo(String... pkgs) { 17 | Collections.addAll(platformPkgs, pkgs); 18 | } 19 | 20 | public abstract boolean relyOnPlatform(PackageInfo info); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/platform/WechatPlatformInfo.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.platform; 2 | 3 | import android.content.pm.ActivityInfo; 4 | import android.content.pm.PackageInfo; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class WechatPlatformInfo extends PlatformInfo { 11 | 12 | public WechatPlatformInfo() { 13 | super("com.tencent.mm"); 14 | } 15 | 16 | @Override 17 | public boolean relyOnPlatform(PackageInfo info) { 18 | if (info.activities == null) { 19 | return false; 20 | } 21 | for (ActivityInfo activityInfo : info.activities) { 22 | if (activityInfo.name.endsWith("WXEntryActivity")) { 23 | return true; 24 | } 25 | } 26 | return false; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/vs/VSManagerActivity.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.vs; 2 | 3 | import io.virtualapp.abs.ui.VActivity; 4 | 5 | /** 6 | * @author Lody 7 | * 8 | * 9 | * 10 | */ 11 | public class VSManagerActivity extends VActivity { 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/widgets/ShimmerViewBase.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.widgets; 2 | 3 | public interface ShimmerViewBase { 4 | 5 | float getGradientX(); 6 | 7 | void setGradientX(float gradientX); 8 | 9 | boolean isShimmering(); 10 | 11 | void setShimmering(boolean isShimmering); 12 | 13 | boolean isSetUp(); 14 | 15 | void setAnimationSetupCallback(ShimmerViewHelper.AnimationSetupCallback callback); 16 | 17 | int getPrimaryColor(); 18 | 19 | void setPrimaryColor(int primaryColor); 20 | 21 | int getReflectionColor(); 22 | 23 | void setReflectionColor(int reflectionColor); 24 | } -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/widgets/ViewHelper.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.widgets; 2 | 3 | import io.virtualapp.VApp; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | public class ViewHelper { 9 | 10 | public static int dip2px(float dpValue) { 11 | final float scale = VApp.getApp().getResources().getDisplayMetrics().density; 12 | return (int) (dpValue * scale + 0.5f); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_add_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_check.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_crash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_crash.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_no_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_no_check.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_shortcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-hdpi/ic_shortcut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_about.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_account.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_device.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_vs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_vs.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/drawable-xxhdpi/ic_wifi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/blue_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/icon_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_clone_app_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_guide_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_clone_app_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_clone_app_btn_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_install.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 14 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_location_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_users.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_user.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/marktet_map.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/user_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | 7 | 60dp 8 | 5dp 9 | 30dp 10 | 8dp 11 | 10dp 12 | 80dp 13 | 5dp 14 | 16dp 15 | 24dp 16 | 17 | 18 | 0.5dp 19 | 60dp 20 | 21 | 56dp 22 | 40dp 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/values/fitTextView.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -2 4 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | 15 | -------------------------------------------------------------------------------- /lib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | .externalNativeBuild/ 3 | obj/ 4 | -------------------------------------------------------------------------------- /lib/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/lody/Desktop/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/aidl/android/app/IActivityManager/ContentProviderHolder.aidl: -------------------------------------------------------------------------------- 1 | // ContentProviderHolder.aidl 2 | package android.app.IActivityManager; 3 | 4 | parcelable ContentProviderHolder; -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/aidl/android/content/ISyncStatusObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | 4 | interface ISyncStatusObserver { 5 | void onStatusChanged(int which); 6 | } 7 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/client/IVClient.aidl: -------------------------------------------------------------------------------- 1 | // IVClient.aidl 2 | package com.lody.virtual.client; 3 | 4 | import android.content.pm.ActivityInfo; 5 | import android.content.pm.ApplicationInfo; 6 | import android.content.pm.ProviderInfo; 7 | 8 | import com.lody.virtual.remote.PendingResultData; 9 | 10 | interface IVClient { 11 | void scheduleReceiver(in String processName,in ComponentName component, in Intent intent, in PendingResultData resultData); 12 | void scheduleNewIntent(in String creator, in IBinder token, in Intent intent); 13 | void finishActivity(in IBinder token); 14 | IBinder createProxyService(in ComponentName component, in IBinder binder); 15 | IBinder acquireProviderClient(in ProviderInfo info); 16 | IBinder getAppThread(); 17 | IBinder getToken(); 18 | String getDebugInfo(); 19 | } -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/os/VUserInfo.aidl: -------------------------------------------------------------------------------- 1 | // VUserInfo.aidl 2 | package com.lody.virtual.os; 3 | 4 | parcelable VUserInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/AppTaskInfo.aidl: -------------------------------------------------------------------------------- 1 | // AppTaskInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable AppTaskInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/BadgerInfo.aidl: -------------------------------------------------------------------------------- 1 | // BadgerInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable BadgerInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/InstallResult.aidl: -------------------------------------------------------------------------------- 1 | // InstallResult.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable InstallResult; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/InstalledAppInfo.aidl: -------------------------------------------------------------------------------- 1 | // AppSetting.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable InstalledAppInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/PendingIntentData.aidl: -------------------------------------------------------------------------------- 1 | // PendingIntentData.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable PendingIntentData; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/PendingResultData.aidl: -------------------------------------------------------------------------------- 1 | // PendingResultData.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable PendingResultData; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/Problem.aidl: -------------------------------------------------------------------------------- 1 | // Problem.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable Problem; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/ReceiverInfo.aidl: -------------------------------------------------------------------------------- 1 | // ReceiverInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable ReceiverInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/VDeviceInfo.aidl: -------------------------------------------------------------------------------- 1 | // VDeviceInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable VDeviceInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/VParceledListSlice.aidl: -------------------------------------------------------------------------------- 1 | // VParceledListSlice.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable VParceledListSlice; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VCell.aidl: -------------------------------------------------------------------------------- 1 | // VCell.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VCell; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VLocation.aidl: -------------------------------------------------------------------------------- 1 | // VLocation.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VLocation; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VWifi.aidl: -------------------------------------------------------------------------------- 1 | // VWifi.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VWifi; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IBinderDelegateService.aidl: -------------------------------------------------------------------------------- 1 | // IBinderDelegateService.aidl 2 | package com.lody.virtual.server; 3 | 4 | import android.content.ComponentName; 5 | 6 | interface IBinderDelegateService { 7 | 8 | ComponentName getComponent(); 9 | 10 | IBinder getService(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IPackageInstallerSession.aidl: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server; 2 | 3 | import android.content.IntentSender; 4 | import android.os.ParcelFileDescriptor; 5 | 6 | interface IPackageInstallerSession { 7 | void setClientProgress(float progress); 8 | void addClientProgress(float progress); 9 | 10 | String[] getNames(); 11 | ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); 12 | ParcelFileDescriptor openRead(String name); 13 | void close(); 14 | void commit(in IntentSender statusReceiver); 15 | void abandon(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IAppRequestListener.aidl: -------------------------------------------------------------------------------- 1 | // IAppRequestListener.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IAppRequestListener { 5 | void onRequestInstall(in String path); 6 | void onRequestUninstall(in String pkg); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IIntentFilterObserver.aidl: -------------------------------------------------------------------------------- 1 | // IIntentFilterObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | interface IIntentFilterObserver { 7 | /** 8 | * Demonstrates some basic types that you can use as parameters 9 | * and return values in AIDL. 10 | */ 11 | 12 | Intent filter(in Intent intent); 13 | void setCallBack(IBinder callBack); 14 | IBinder getCallBack(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IPackageObserver.aidl: -------------------------------------------------------------------------------- 1 | // IPackageObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IPackageObserver { 5 | void onPackageInstalled(in String packageName); 6 | void onPackageUninstalled(in String packageName); 7 | void onPackageInstalledAsUser(in int userId, in String packageName); 8 | void onPackageUninstalledAsUser(in int userId, in String packageName); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IProcessObserver.aidl: -------------------------------------------------------------------------------- 1 | // IProcessObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IProcessObserver { 5 | void onProcessCreated(in String pkg, in String processName); 6 | 7 | void onProcessDied(in String pkg, in String processName); 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IServiceFetcher.aidl: -------------------------------------------------------------------------------- 1 | // IServiceFetcher.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IServiceFetcher { 5 | IBinder getService(String name); 6 | void addService(String name,in IBinder service); 7 | void removeService(String name); 8 | } -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IUiCallback.aidl: -------------------------------------------------------------------------------- 1 | // IUiCallback.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IUiCallback { 5 | void onAppOpened(in String packageName, in int userId); 6 | } 7 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/pm/installer/SessionInfo.aidl: -------------------------------------------------------------------------------- 1 | // SessionInfo.aidl 2 | package com.lody.virtual.server.pm.installer; 3 | 4 | parcelable SessionInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/pm/installer/SessionParams.aidl: -------------------------------------------------------------------------------- 1 | // SessionParams.aidl 2 | package com.lody.virtual.server.pm.installer; 3 | 4 | parcelable SessionParams; -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/Build.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual; 2 | 3 | /** 4 | * 5 | * Version info of VirtualApp project. 6 | * 7 | * @author Lody 8 | * 9 | */ 10 | 11 | public class Build { 12 | 13 | public static final String VERSION_NAME = "Build-823-01"; 14 | 15 | public static final int VERSION_CODE = 8230001; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/badger/IBadger.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.badger; 2 | 3 | import android.content.Intent; 4 | 5 | import com.lody.virtual.remote.BadgerInfo; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | public interface IBadger { 11 | 12 | String getAction(); 13 | 14 | BadgerInfo handleBadger(Intent intent); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/core/CrashHandler.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.core; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public interface CrashHandler { 8 | 9 | void handleUncaughtException(Thread t, Throwable e); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/core/InstallStrategy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.core; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | * 7 | */ 8 | public interface InstallStrategy { 9 | int TERMINATE_IF_EXIST = 0x01 << 1; 10 | int UPDATE_IF_EXIST = 0x01 << 2; 11 | int COMPARE_VERSION = 0X01 << 3; 12 | int IGNORE_NEW_VERSION = 0x01 << 4; 13 | int DEPEND_SYSTEM_IF_EXIST = 0x01 << 5; 14 | int SKIP_DEX_OPT = 0x01 << 6; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/env/DeadServerException.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.env; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class DeadServerException extends RuntimeException { 8 | 9 | public DeadServerException() { 10 | } 11 | 12 | public DeadServerException(String message) { 13 | super(message); 14 | } 15 | 16 | public DeadServerException(String message, Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public DeadServerException(Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | public DeadServerException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 25 | super(message, cause, enableSuppression, writableStackTrace); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/Inject.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 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 | /** 9 | * @author Lody 10 | * 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface Inject { 15 | Class value(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceCallingPkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.lody.virtual.client.hook.utils.MethodParameterUtils; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ReplaceCallingPkgMethodProxy extends StaticMethodProxy { 12 | 13 | public ReplaceCallingPkgMethodProxy(String name) { 14 | super(name); 15 | } 16 | 17 | @Override 18 | public boolean beforeCall(Object who, Method method, Object... args) { 19 | MethodParameterUtils.replaceFirstAppPkg(args); 20 | return super.beforeCall(who, method, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceLastPkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.lody.virtual.client.hook.utils.MethodParameterUtils; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ReplaceLastPkgMethodProxy extends StaticMethodProxy { 12 | 13 | public ReplaceLastPkgMethodProxy(String name) { 14 | super(name); 15 | } 16 | 17 | @Override 18 | public boolean beforeCall(Object who, Method method, Object... args) { 19 | MethodParameterUtils.replaceLastAppPkg(args); 20 | return super.beforeCall(who, method, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceLastUidMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import android.os.Process; 4 | 5 | import com.lody.virtual.helper.utils.ArrayUtils; 6 | 7 | import java.lang.reflect.Method; 8 | 9 | public class ReplaceLastUidMethodProxy extends StaticMethodProxy { 10 | 11 | public ReplaceLastUidMethodProxy(String name) { 12 | super(name); 13 | } 14 | 15 | @Override 16 | public boolean beforeCall(Object who, Method method, Object... args) { 17 | int index = ArrayUtils.indexOfLast(args, Integer.class); 18 | if (index != -1) { 19 | int uid = (int) args[index]; 20 | if (uid == Process.myUid()) { 21 | args[index] = getRealUid(); 22 | } 23 | } 24 | return super.beforeCall(who, method, args); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceSequencePkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.lody.virtual.client.hook.utils.MethodParameterUtils; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ReplaceSequencePkgMethodProxy extends StaticMethodProxy { 12 | 13 | private int sequence; 14 | 15 | public ReplaceSequencePkgMethodProxy(String name, int sequence) { 16 | super(name); 17 | this.sequence = sequence; 18 | } 19 | 20 | @Override 21 | public boolean beforeCall(Object who, Method method, Object... args) { 22 | MethodParameterUtils.replaceSequenceAppPkg(args, sequence); 23 | return super.beforeCall(who, method, args); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceSpecPkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class ReplaceSpecPkgMethodProxy extends StaticMethodProxy { 10 | 11 | private int index; 12 | 13 | public ReplaceSpecPkgMethodProxy(String name, int index) { 14 | super(name); 15 | this.index = index; 16 | } 17 | 18 | @Override 19 | public boolean beforeCall(Object who, Method method, Object... args) { 20 | if (args != null) { 21 | int i = index; 22 | if (i < 0) { 23 | i += args.length; 24 | } 25 | if (i >= 0 && i < args.length && args[i] instanceof String) { 26 | args[i] = getHostPkg(); 27 | } 28 | } 29 | return super.beforeCall(who, method, args); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceUidMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | public class ReplaceUidMethodProxy extends StaticMethodProxy { 6 | 7 | private final int index; 8 | public ReplaceUidMethodProxy(String name, int index) { 9 | super(name); 10 | this.index = index; 11 | } 12 | 13 | @Override 14 | public boolean beforeCall(Object who, Method method, Object... args) { 15 | int uid = (int) args[index]; 16 | if (uid == getVUid() || uid == getBaseVUid()) { 17 | args[index] = getRealUid(); 18 | } 19 | return super.beforeCall(who, method, args); 20 | } 21 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ResultStaticMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class ResultStaticMethodProxy extends StaticMethodProxy { 10 | 11 | Object mResult; 12 | 13 | public ResultStaticMethodProxy(String name, Object result) { 14 | super(name); 15 | mResult = result; 16 | } 17 | 18 | public Object getResult() { 19 | return mResult; 20 | } 21 | 22 | @Override 23 | public Object call(Object who, Method method, Object... args) throws Throwable { 24 | return mResult; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/SkipInject.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 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 | /** 9 | * @author Lody 10 | * 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SkipInject { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/StaticMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class StaticMethodProxy extends MethodProxy { 8 | 9 | private String mName; 10 | 11 | public StaticMethodProxy(String name) { 12 | this.mName = name; 13 | } 14 | 15 | @Override 16 | public String getMethodName() { 17 | return mName; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/delegate/PhoneInfoDelegate.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.delegate; 2 | 3 | public interface PhoneInfoDelegate { 4 | 5 | /*** 6 | * Fake the Device ID. 7 | * 8 | * @param oldDeviceId old DeviceId 9 | * @param userId user 10 | */ 11 | String getDeviceId(String oldDeviceId, int userId); 12 | 13 | /*** 14 | * Fake the BluetoothAddress 15 | * 16 | * @param oldBluetoothAddress old BluetoothAddress 17 | * @param userId user 18 | */ 19 | String getBluetoothAddress(String oldBluetoothAddress, int userId); 20 | 21 | /*** 22 | * Fake the macAddress 23 | * 24 | * @param oldMacAddress old MacAddress 25 | * @param userId user 26 | */ 27 | String getMacAddress(String oldMacAddress, int userId); 28 | } 29 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/delegate/TaskDescriptionDelegate.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.delegate; 2 | 3 | import android.annotation.TargetApi; 4 | import android.app.Activity; 5 | import android.app.ActivityManager; 6 | import android.os.Build; 7 | 8 | public interface TaskDescriptionDelegate { 9 | public ActivityManager.TaskDescription getTaskDescription(ActivityManager.TaskDescription oldTaskDescription); 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/providers/ExternalProviderHook.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.providers; 2 | 3 | import com.lody.virtual.client.core.VirtualCore; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ExternalProviderHook extends ProviderHook { 12 | 13 | public ExternalProviderHook(Object base) { 14 | super(base); 15 | } 16 | 17 | @Override 18 | protected void processArgs(Method method, Object... args) { 19 | if (args != null && args.length > 0 && args[0] instanceof String) { 20 | String pkg = (String) args[0]; 21 | if (VirtualCore.get().isAppInstalled(pkg)) { 22 | args[0] = VirtualCore.get().getHostPkg(); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/providers/InternalProviderHook.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.providers; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class InternalProviderHook extends ProviderHook { 8 | 9 | public InternalProviderHook(Object base) { 10 | super(base); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/content/ContentServiceStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.content; 2 | 3 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 4 | 5 | import mirror.android.content.IContentService; 6 | 7 | /** 8 | * @author Lody 9 | * 10 | * @see IContentService 11 | */ 12 | 13 | public class ContentServiceStub extends BinderInvocationProxy { 14 | 15 | public ContentServiceStub() { 16 | super(IContentService.Stub.asInterface, "content"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/dropbox/DropBoxManagerStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.dropbox; 2 | 3 | import android.content.Context; 4 | 5 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 6 | import com.lody.virtual.client.hook.base.ResultStaticMethodProxy; 7 | 8 | import mirror.com.android.internal.os.IDropBoxManagerService; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | public class DropBoxManagerStub extends BinderInvocationProxy { 14 | public DropBoxManagerStub() { 15 | super(IDropBoxManagerService.Stub.asInterface, Context.DROPBOX_SERVICE); 16 | } 17 | 18 | @Override 19 | protected void onBindMethods() { 20 | super.onBindMethods(); 21 | addMethodProxy(new ResultStaticMethodProxy("getNextEntry", null)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/graphics/GraphicsStatsStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.graphics; 2 | 3 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 4 | import com.lody.virtual.client.hook.base.ReplaceCallingPkgMethodProxy; 5 | 6 | import mirror.android.view.IGraphicsStats; 7 | 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | public class GraphicsStatsStub extends BinderInvocationProxy { 13 | 14 | public GraphicsStatsStub() { 15 | super(IGraphicsStats.Stub.asInterface, "graphicsstats"); 16 | } 17 | 18 | @Override 19 | protected void onBindMethods() { 20 | super.onBindMethods(); 21 | addMethodProxy(new ReplaceCallingPkgMethodProxy("requestBufferForProcess")); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/network/NetworkManagementStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.network; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 7 | import com.lody.virtual.client.hook.base.ReplaceUidMethodProxy; 8 | 9 | import mirror.android.os.INetworkManagementService; 10 | 11 | @TargetApi(Build.VERSION_CODES.M) 12 | public class 13 | NetworkManagementStub extends BinderInvocationProxy { 14 | 15 | public NetworkManagementStub() { 16 | super(INetworkManagementService.Stub.asInterface, "network_management"); 17 | } 18 | 19 | @Override 20 | protected void onBindMethods() { 21 | super.onBindMethods(); 22 | addMethodProxy(new ReplaceUidMethodProxy("setUidCleartextNetworkPolicy", 0)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/wifi_scanner/WifiScannerStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.wifi_scanner; 2 | 3 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class WifiScannerStub extends BinderInvocationProxy { 10 | 11 | public WifiScannerStub() { 12 | super(new GhostWifiScannerImpl(), "wifiscanner"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/secondary/HackAppUtils.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.secondary; 2 | 3 | import com.lody.virtual.helper.utils.Reflect; 4 | import com.lody.virtual.helper.utils.ReflectException; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class HackAppUtils { 11 | 12 | /** 13 | * Enable the Log output of QQ. 14 | * 15 | * @param packageName package name 16 | * @param classLoader class loader 17 | */ 18 | public static void enableQQLogOutput(String packageName, ClassLoader classLoader) { 19 | if ("com.tencent.mobileqq".equals(packageName)) { 20 | try { 21 | Reflect.on("com.tencent.qphone.base.util.QLog", classLoader).set("UIN_REPORTLOG_LEVEL", 100); 22 | } catch (ReflectException e) { 23 | // ignore 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/interfaces/IInjector.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.interfaces; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | * The Objects who implemention this interface will be able to inject other object. 7 | * 8 | */ 9 | public interface IInjector { 10 | 11 | /** 12 | * 13 | * Do injection. 14 | * 15 | * @throws Throwable if inject failed 16 | */ 17 | void inject() throws Throwable; 18 | 19 | /** 20 | * Check if the injection has bad. 21 | * 22 | * @return If the injection has bad 23 | */ 24 | boolean isEnvBad(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/ipc/ActivityClientRecord.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.ipc; 2 | 3 | import android.app.Activity; 4 | import android.content.pm.ActivityInfo; 5 | 6 | public class ActivityClientRecord { 7 | public Activity activity; 8 | public ActivityInfo info; 9 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/ApplicationThreadCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.android.app.ApplicationThreadNative; 7 | import mirror.android.app.IApplicationThreadOreo; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ApplicationThreadCompat { 14 | 15 | public static IInterface asInterface(IBinder binder) { 16 | if (BuildCompat.isOreo()) { 17 | return IApplicationThreadOreo.Stub.asInterface.call(binder); 18 | } 19 | return ApplicationThreadNative.asInterface.call(binder); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/BuildCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | import android.os.Build; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class BuildCompat { 10 | 11 | public static int getPreviewSDKInt() { 12 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 13 | try { 14 | return Build.VERSION.PREVIEW_SDK_INT; 15 | } catch (Throwable e) { 16 | // ignore 17 | } 18 | } 19 | return 0; 20 | } 21 | 22 | public static boolean isOreo() { 23 | 24 | return (Build.VERSION.SDK_INT == 25 && getPreviewSDKInt() > 0) 25 | || Build.VERSION.SDK_INT > 25; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/ContentResolverCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class ContentResolverCompat { 8 | 9 | public static final int SYNC_OBSERVER_TYPE_STATUS = 1 << 3; 10 | 11 | 12 | public static final int SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS = 1; 13 | 14 | public static final int SYNC_ERROR_AUTHENTICATION = 2; 15 | 16 | public static final int SYNC_ERROR_IO = 3; 17 | 18 | public static final int SYNC_ERROR_PARSE = 4; 19 | 20 | public static final int SYNC_ERROR_CONFLICT = 5; 21 | 22 | public static final int SYNC_ERROR_TOO_MANY_DELETIONS = 6; 23 | 24 | public static final int SYNC_ERROR_TOO_MANY_RETRIES = 7; 25 | 26 | public static final int SYNC_ERROR_INTERNAL = 8; 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/ObjectsCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class ObjectsCompat { 8 | 9 | /** 10 | * Null-safe equivalent of {@code a.equals(b)}. 11 | */ 12 | public static boolean equals(Object a, Object b) { 13 | return (a == null) ? (b == null) : a.equals(b); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/ipcbus/IPCSingleton.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.ipcbus; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class IPCSingleton { 7 | 8 | private Class ipcClass; 9 | private T instance; 10 | 11 | public IPCSingleton(Class ipcClass) { 12 | this.ipcClass = ipcClass; 13 | } 14 | 15 | public T get() { 16 | if (instance == null) { 17 | synchronized (this) { 18 | if (instance == null) { 19 | instance = IPCBus.get(ipcClass); 20 | } 21 | } 22 | } 23 | return instance; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/ipcbus/IServerCache.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.ipcbus; 2 | 3 | import android.os.IBinder; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | public interface IServerCache { 9 | void join(String serverName, IBinder binder); 10 | IBinder query(String serverName); 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/ClassUtils.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | */ 7 | public class ClassUtils { 8 | 9 | public static boolean isClassExist(String className) { 10 | try { 11 | Class.forName(className); 12 | return true; 13 | } catch (ClassNotFoundException e) { 14 | return false; 15 | } 16 | } 17 | 18 | public static void fixArgs(Class[] types, Object[] args) { 19 | for (int i = 0; i < types.length; i++) { 20 | if (types[i] == int.class && args[i] == null) { 21 | args[i] = 0; 22 | } else if (types[i] == boolean.class && args[i] == null) { 23 | args[i] = false; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/ReflectException.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class ReflectException extends RuntimeException { 7 | 8 | public ReflectException(String message, Throwable cause) { 9 | super(message, cause); 10 | } 11 | 12 | public ReflectException(Throwable cause) { 13 | super(cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/Singleton.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * Singleton helper class for lazily initialization. 5 | * 6 | * Modeled after frameworks/base/include/utils/Singleton.h 7 | * 8 | * @hide 9 | */ 10 | public abstract class Singleton { 11 | private T mInstance; 12 | 13 | protected abstract T create(); 14 | 15 | public final T get() { 16 | synchronized (this) { 17 | if (mInstance == null) { 18 | mInstance = create(); 19 | } 20 | return mInstance; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/XmlSerializerAndParser.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | import org.xmlpull.v1.XmlPullParser; 4 | import org.xmlpull.v1.XmlPullParserException; 5 | import org.xmlpull.v1.XmlSerializer; 6 | 7 | import java.io.IOException; 8 | 9 | public interface XmlSerializerAndParser { 10 | void writeAsXml(T item, XmlSerializer out) throws IOException; 11 | T createFromXml(XmlPullParser parser) throws IOException, XmlPullParserException; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/marks/FakeDeviceMark.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils.marks; 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 | 9 | @Target(ElementType.TYPE) 10 | @Retention(RetentionPolicy.SOURCE) 11 | public @interface FakeDeviceMark { 12 | String value() default ""; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/marks/FakeLocMark.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils.marks; 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 | 9 | @Target(ElementType.TYPE) 10 | @Retention(RetentionPolicy.SOURCE) 11 | public @interface FakeLocMark { 12 | String value() default ""; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/os/VBinder.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.os; 2 | 3 | import android.os.Binder; 4 | 5 | import com.lody.virtual.client.ipc.VActivityManager; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class VBinder { 12 | 13 | public static int getCallingUid() { 14 | return VActivityManager.get().getUidByPid(Binder.getCallingPid()); 15 | } 16 | 17 | public static int getBaseCallingUid() { 18 | return VUserHandle.getAppId(getCallingUid()); 19 | } 20 | 21 | public static int getCallingPid() { 22 | return Binder.getCallingPid(); 23 | } 24 | 25 | public static VUserHandle getCallingUserHandle() { 26 | return new VUserHandle(VUserHandle.getUserId(getCallingUid())); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/ServiceCache.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server; 2 | 3 | import android.os.IBinder; 4 | 5 | import com.lody.virtual.helper.collection.ArrayMap; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ServiceCache { 14 | 15 | private static final Map sCache = new ArrayMap<>(5); 16 | 17 | public static void addService(String name, IBinder service) { 18 | sCache.put(name, service); 19 | } 20 | 21 | public static IBinder removeService(String name) { 22 | return sCache.remove(name); 23 | } 24 | 25 | public static IBinder getService(String name) { 26 | return sCache.get(name); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/interfaces/IDeviceInfoManager.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.interfaces; 2 | 3 | import android.os.RemoteException; 4 | 5 | import com.lody.virtual.remote.VDeviceInfo; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | public interface IDeviceInfoManager { 11 | 12 | VDeviceInfo getDeviceInfo(int userId) throws RemoteException; 13 | 14 | void updateDeviceInfo(int userId, VDeviceInfo info) throws RemoteException; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/interfaces/IJobService.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.interfaces; 2 | 3 | import android.app.job.JobInfo; 4 | import android.os.Parcelable; 5 | import android.os.RemoteException; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | public interface IJobService { 13 | 14 | int schedule(JobInfo job) throws RemoteException; 15 | 16 | void cancel(int jobId) throws RemoteException; 17 | 18 | void cancelAll() throws RemoteException; 19 | 20 | List getAllPendingJobs() throws RemoteException; 21 | 22 | int enqueue(JobInfo jobInfo, Parcelable parcelable) throws RemoteException; 23 | 24 | JobInfo getPendingJob(int i) throws RemoteException; 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/interfaces/INotificationManager.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.interfaces; 2 | 3 | import android.os.RemoteException; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | public interface INotificationManager { 9 | 10 | int dealNotificationId(int id, String packageName, String tag, int userId) throws RemoteException; 11 | 12 | String dealNotificationTag(int id, String packageName, String tag, int userId) throws RemoteException; 13 | 14 | boolean areNotificationsEnabledForPackage(String packageName, int userId) throws RemoteException; 15 | 16 | void setNotificationsEnabledForPackage(String packageName, boolean enable, int userId) throws RemoteException; 17 | 18 | void addNotification(int id, String tag, String packageName, int userId) throws RemoteException; 19 | 20 | void cancelAllNotification(String packageName, int userId) throws RemoteException; 21 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/interfaces/IVirtualStorageService.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.interfaces; 2 | 3 | import android.os.RemoteException; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | public interface IVirtualStorageService { 9 | 10 | void setVirtualStorage(String packageName, int userId, String vsPath) throws RemoteException; 11 | 12 | String getVirtualStorage(String packageName, int userId) throws RemoteException; 13 | 14 | void setVirtualStorageState(String packageName, int userId, boolean enable) throws RemoteException; 15 | 16 | boolean isVirtualStorageEnable(String packageName, int userId) throws RemoteException; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/pm/installer/PackageInstallInfo.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.pm.installer; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class PackageInstallInfo { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | return null; 19 | } 20 | } 21 | 22 | public void set(Object obj, T value) { 23 | try { 24 | this.field.set(obj, value); 25 | } catch (Exception e) { 26 | //Ignore 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/Activity.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import android.content.Intent; 5 | import android.content.pm.ActivityInfo; 6 | import android.os.IBinder; 7 | 8 | import mirror.RefBoolean; 9 | import mirror.RefClass; 10 | import mirror.RefObject; 11 | import mirror.RefInt; 12 | 13 | public class Activity { 14 | public static Class TYPE = RefClass.load(Activity.class, "android.app.Activity"); 15 | public static RefObject mActivityInfo; 16 | public static RefBoolean mFinished; 17 | public static RefObject mParent; 18 | public static RefInt mResultCode; 19 | public static RefObject mResultData; 20 | public static RefObject mToken; 21 | public static RefObject mEmbeddedID; 22 | } 23 | -------------------------------------------------------------------------------- /lib/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 gDefault; 13 | public static RefStaticMethod getDefault; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ActivityManagerOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticMethod; 7 | import mirror.RefStaticObject; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ActivityManagerOreo { 14 | 15 | public static Class TYPE = RefClass.load(ActivityManagerOreo.class, "android.app.ActivityManager"); 16 | 17 | public static RefStaticMethod getService; 18 | public static RefStaticObject IActivityManagerSingleton; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ActivityThreadNMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import mirror.MethodParams; 8 | import mirror.RefClass; 9 | import mirror.RefMethod; 10 | 11 | /** 12 | * @author Lody 13 | */ 14 | 15 | public class ActivityThreadNMR1 { 16 | public static Class Class = RefClass.load(ActivityThreadNMR1.class, "android.app.ActivityThread"); 17 | @MethodParams({IBinder.class, List.class, boolean.class}) 18 | public static RefMethod performNewIntents; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ApplicationThreadNative.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 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 | /** 11 | * @author Lody 12 | */ 13 | public class ApplicationThreadNative { 14 | public static Class TYPE = RefClass.load(ApplicationThreadNative.class, "android.app.ApplicationThreadNative"); 15 | 16 | @MethodParams({IBinder.class}) 17 | public static RefStaticMethod asInterface; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ContextImpl.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import android.content.Context; 5 | import android.content.pm.PackageManager; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | import mirror.RefObject; 10 | import mirror.MethodParams; 11 | 12 | public class ContextImpl { 13 | public static Class TYPE = RefClass.load(ContextImpl.class, "android.app.ContextImpl"); 14 | @MethodParams({Context.class}) 15 | public static RefObject mBasePackageName; 16 | public static RefObject mPackageInfo; 17 | public static RefObject mPackageManager; 18 | 19 | public static RefMethod getReceiverRestrictedContext; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ContextImplICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import java.io.File; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContextImplICS { 9 | public static Class TYPE = RefClass.load(ContextImplICS.class, "android.app.ContextImpl"); 10 | public static RefObject mExternalCacheDir; 11 | public static RefObject mExternalFilesDir; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ContextImplKitkat.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import java.io.File; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContextImplKitkat { 9 | public static Class TYPE = RefClass.load(ContextImplKitkat.class, "android.app.ContextImpl"); 10 | public static RefObject mExternalCacheDirs; 11 | public static RefObject mExternalFilesDirs; 12 | public static RefObject mOpPackageName; 13 | public static RefObject mDisplayAdjustments; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | import mirror.MethodParams; 8 | 9 | public class IActivityManagerICS { 10 | public static Class TYPE = RefClass.load(IActivityManagerICS.class, "android.app.IActivityManager"); 11 | @MethodParams({IBinder.class, int.class, Intent.class}) 12 | public static RefMethod finishActivity; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IActivityManagerL { 15 | public static Class TYPE = RefClass.load(IActivityManagerL.class, "android.app.IActivityManager"); 16 | @MethodParams({IBinder.class, int.class, Intent.class, boolean.class}) 17 | public static RefMethod finishActivity; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IActivityManagerN { 15 | public static Class TYPE = RefClass.load(IActivityManagerN.class, "android.app.IActivityManager"); 16 | @MethodParams({IBinder.class, int.class, Intent.class, int.class}) 17 | public static RefMethod finishActivity; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IAlarmManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 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 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IAlarmManager { 15 | public static Class TYPE = RefClass.load(IAlarmManager.class, "android.app.IAlarmManager"); 16 | public static class Stub { 17 | public static Class TYPE = RefClass.load(Stub.class, "android.app.IAlarmManager$Stub"); 18 | @MethodParams({IBinder.class}) 19 | public static RefStaticMethod asInterface; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IApplicationThreadJBMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | import mirror.MethodReflectParams; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class IApplicationThreadJBMR1 { 12 | public static Class TYPE = RefClass.load(IApplicationThreadJBMR1.class, "android.app.IApplicationThread"); 13 | 14 | @MethodReflectParams({"android.content.Intent", "android.content.pm.ActivityInfo", "android.content.res.CompatibilityInfo", "int", "java.lang.String", "android.os.Bundle", "boolean", "int"}) 15 | public static RefMethod scheduleReceiver; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ISearchManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 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 ISearchManager { 11 | public static Class TYPE = RefClass.load(ISearchManager.class, "android.app.ISearchManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.ISearchManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IServiceConnectionO.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.ComponentName; 4 | import android.os.IBinder; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | public class IServiceConnectionO { 11 | public static Class TYPE = RefClass.load(IServiceConnectionO.class, "android.app.IServiceConnection"); 12 | 13 | @MethodParams({ComponentName.class, IBinder.class, boolean.class}) 14 | public static RefMethod connected; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IUsageStatsManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * Created by caokai on 2017/9/8. 12 | */ 13 | 14 | public class IUsageStatsManager { 15 | public static Class TYPE = RefClass.load(IUsageStatsManager.class, "android.app.usage.IUsageStatsManager"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(IUsageStatsManager.Stub.class, "android.app.usage.IUsageStatsManager$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/LoadedApkHuaWei.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class LoadedApkHuaWei { 11 | public static Class TYPE = RefClass.load(LoadedApkHuaWei.class, "android.app.LoadedApk"); 12 | public static RefObject mReceiverResource; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/LoadedApkICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class LoadedApkICS { 8 | public static Class Class = RefClass.load(LoadedApkICS.class, "android.app.LoadedApk"); 9 | public static RefObject mCompatibilityInfo; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/LoadedApkKitkat.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class LoadedApkKitkat { 8 | public static Class Class = RefClass.load(LoadedApkKitkat.class, "android.app.LoadedApk"); 9 | public static RefObject mDisplayAdjustments; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/Notification.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.PendingIntent; 4 | import android.content.Context; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | public class Notification { 11 | public static Class TYPE = RefClass.load(Notification.class, android.app.Notification.class); 12 | @MethodParams({Context.class, CharSequence.class, CharSequence.class, PendingIntent.class}) 13 | public static RefMethod setLatestEventInfo; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.Notification; 4 | import android.content.Context; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class NotificationL { 11 | public static Class TYPE = RefClass.load(NotificationL.class, Notification.class); 12 | 13 | public static class Builder { 14 | public static Class TYPE = RefClass.load(Builder.class, android.app.Notification.Builder.class); 15 | 16 | @MethodParams({Context.class, Notification.class}) 17 | public static RefStaticMethod rebuild; 18 | } 19 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationM.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import android.app.Notification; 5 | import android.graphics.drawable.Icon; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | public class NotificationM { 11 | public static Class TYPE = RefClass.load(NotificationM.class, Notification.class); 12 | public static RefObject mLargeIcon; 13 | public static RefObject mSmallIcon; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class NotificationManager { 10 | public static Class TYPE = RefClass.load(NotificationManager.class, "android.app.NotificationManager"); 11 | 12 | public static RefStaticMethod getService; 13 | public static RefStaticObject sService; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/PendingIntentJBMR2.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.PendingIntent; 4 | import android.content.Intent; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | 9 | public class PendingIntentJBMR2 { 10 | public static Class Class = RefClass.load(PendingIntentJBMR2.class, PendingIntent.class); 11 | public static RefMethod getIntent; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ServiceStartArgs.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefBoolean; 7 | import mirror.RefClass; 8 | import mirror.RefConstructor; 9 | import mirror.RefInt; 10 | import mirror.RefObject; 11 | 12 | /** 13 | * @author Lody 14 | */ 15 | public class ServiceStartArgs { 16 | public static Class TYPE = RefClass.load(ServiceStartArgs.class, "android.app.ServiceStartArgs"); 17 | @MethodParams({boolean.class, int.class, int.class, Intent.class}) 18 | public static RefConstructor ctor; 19 | public static RefBoolean taskRemoved; 20 | public static RefInt startId; 21 | public static RefInt flags; 22 | public static RefObject args; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/admin/IDevicePolicyManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.admin; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * Created by wy on 2017/10/20. 12 | */ 13 | 14 | public class IDevicePolicyManager { 15 | public static Class TYPE = RefClass.load(IDevicePolicyManager.class, "android.app.admin.IDevicePolicyManager"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(Stub.class, "android.app.admin.IDevicePolicyManager$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/backup/IBackupManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.backup; 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 IBackupManager { 11 | public static Class TYPE = RefClass.load(IBackupManager.class, "android.app.backup.IBackupManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.backup.IBackupManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/IJobScheduler.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 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 IJobScheduler { 11 | public static Class TYPE = RefClass.load(IJobScheduler.class, "android.app.job.IJobScheduler"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.job.IJobScheduler$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/JobInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 2 | 3 | import android.annotation.TargetApi; 4 | import android.content.ComponentName; 5 | import android.os.Build; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefInt; 9 | import mirror.RefObject; 10 | 11 | /** 12 | * @author Lody 13 | */ 14 | 15 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 16 | public class JobInfo { 17 | public static Class TYPE = RefClass.load(JobInfo.class, android.app.job.JobInfo.class); 18 | 19 | public static RefInt jobId; 20 | public static RefObject service; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/JobParameters.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | import android.os.IBinder; 6 | import android.os.PersistableBundle; 7 | 8 | import mirror.MethodParams; 9 | import mirror.RefClass; 10 | import mirror.RefConstructor; 11 | import mirror.RefInt; 12 | import mirror.RefObject; 13 | 14 | /** 15 | * @author Lody 16 | */ 17 | 18 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 19 | public class JobParameters { 20 | public static Class TYPE = RefClass.load(JobParameters.class, android.app.job.JobParameters.class); 21 | 22 | public static RefObject callback; 23 | public static RefObject extras; 24 | public static RefInt jobId; 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/JobWorkItem.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 2 | 3 | import android.annotation.TargetApi; 4 | import android.content.Intent; 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | import mirror.RefMethod; 10 | import mirror.RefObject; 11 | 12 | @TargetApi(26) 13 | public class JobWorkItem { 14 | public static Class TYPE = RefClass.load(JobWorkItem.class, android.app.job.JobWorkItem.class); 15 | @MethodParams({Intent.class}) 16 | public static RefConstructor ctor; 17 | public static RefMethod getIntent; 18 | public static RefInt mDeliveryCount; 19 | public static RefObject mGrants; 20 | public static RefInt mWorkId; 21 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/bluetooth/IBluetooth.java: -------------------------------------------------------------------------------- 1 | package mirror.android.bluetooth; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IBluetooth { 11 | /** 12 | * @see android.bluetooth.IBluetooth 13 | * */ 14 | public static Class TYPE = RefClass.load(IBluetooth.class, "android.bluetooth.IBluetooth"); 15 | /** 16 | * @see android.bluetooth.IBluetooth.Stub 17 | * */ 18 | public static class Stub { 19 | public static Class TYPE = RefClass.load(Stub.class, "android.bluetooth.IBluetooth$Stub"); 20 | @MethodParams({IBinder.class}) 21 | public static RefStaticMethod asInterface; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/bluetooth/IBluetoothManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.bluetooth; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IBluetoothManager { 11 | /** 12 | * @see android.bluetooth.IBluetoothManager 13 | * */ 14 | public static Class TYPE = RefClass.load(IBluetoothManager.class, "android.bluetooth.IBluetoothManager"); 15 | /** 16 | * @see android.bluetooth.IBluetoothManager.Stub 17 | * */ 18 | public static class Stub { 19 | public static Class TYPE = RefClass.load(Stub.class, "android.bluetooth.IBluetoothManager$Stub"); 20 | @MethodParams({IBinder.class}) 21 | public static RefStaticMethod asInterface; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ClipboardManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class ClipboardManager { 10 | public static Class TYPE = RefClass.load(ClipboardManager.class, android.content.ClipboardManager.class); 11 | public static RefStaticMethod getService; 12 | public static RefStaticObject sService; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ClipboardManagerOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ClipboardManagerOreo { 9 | public static Class TYPE = RefClass.load(ClipboardManagerOreo.class, android.content.ClipboardManager.class); 10 | public static RefObject mService; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderClient.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContentProviderClient { 9 | public static Class Class = RefClass.load(ContentProviderClient.class, android.content.ContentProviderClient.class); 10 | public static RefObject mContentProvider; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderHolderOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.pm.ProviderInfo; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefBoolean; 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class ContentProviderHolderOreo { 15 | public static Class TYPE = RefClass.load(ContentProviderHolderOreo.class, "android.app.ContentProviderHolder"); 16 | public static RefObject info; 17 | public static RefObject provider; 18 | public static RefBoolean noReleaseNeeded; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderNative.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 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 ContentProviderNative { 11 | public static Class TYPE = RefClass.load(ContentProviderNative.class, "android.content.ContentProviderNative"); 12 | @MethodParams({IBinder.class}) 13 | public static RefStaticMethod asInterface; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentResolver.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class ContentResolver { 13 | public static Class TYPE = RefClass.load(ContentResolver.class, android.content.ContentResolver.class); 14 | public static RefStaticObject sContentService; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentResolverJBMR2.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.ContentResolver; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContentResolverJBMR2 { 9 | public static Class Class = RefClass.load(ContentResolverJBMR2.class, ContentResolver.class);; 10 | public static RefObject mPackageName; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IClipboard.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IClipboard { 6 | public static Class TYPE = RefClass.load(IClipboard.class, "android.content.IClipboard"); 7 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import mirror.RefClass; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class IContentProvider { 10 | public static Class TYPE = RefClass.load(IContentProvider.class, "android.content.IContentProvider"); 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IContentService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 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 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IContentService { 15 | public static Class TYPE = RefClass.load(IContentService.class, "android.content.IContentService"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(Stub.class, "android.content.IContentService$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IIntentReceiver.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IIntentReceiver { 15 | public static Class TYPE = RefClass.load(IIntentReceiver.class, "android.content.IIntentReceiver"); 16 | 17 | @MethodParams({Intent.class, int.class, 18 | String.class, Bundle.class, boolean.class, boolean.class}) 19 | public static RefMethod performReceive; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IIntentReceiverJB.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IIntentReceiverJB { 15 | public static Class TYPE = RefClass.load(IIntentReceiverJB.class, "android.content.IIntentReceiver"); 16 | 17 | @MethodParams({Intent.class, int.class, 18 | String.class, Bundle.class, boolean.class, boolean.class, int.class}) 19 | public static RefMethod performReceive; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IRestrictionsManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 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 IRestrictionsManager { 11 | public static Class TYPE = RefClass.load(IRestrictionsManager.class, "android.content.IRestrictionsManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.content.IRestrictionsManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IntentFilter.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import java.util.List; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class IntentFilter { 13 | public static Class Class = RefClass.load(IntentFilter.class, android.content.IntentFilter.class); 14 | public static RefObject> mActions; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncAdapterType.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | 4 | import mirror.MethodParams; 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | 8 | public class SyncAdapterType { 9 | public static Class TYPE = RefClass.load(SyncAdapterType.class, android.content.SyncAdapterType.class); 10 | @MethodParams({String.class, String.class, boolean.class, boolean.class, boolean.class, boolean.class, String.class}) 11 | public static RefConstructor ctor; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncAdapterTypeN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.SyncAdapterType; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | 9 | public class SyncAdapterTypeN { 10 | public static Class Class = RefClass.load(SyncAdapterTypeN.class, SyncAdapterType.class); 11 | @MethodParams({String.class, String.class, boolean.class, boolean.class, boolean.class, boolean.class, String.class, String.class}) 12 | public static RefConstructor ctor; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.accounts.Account; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | 9 | public class SyncInfo { 10 | public static Class TYPE = RefClass.load(SyncInfo.class, android.content.SyncInfo.class); 11 | @MethodParams({int.class, Account.class, String.class, long.class}) 12 | public static RefConstructor ctor; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncRequest.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | 4 | import android.accounts.Account; 5 | import android.annotation.TargetApi; 6 | import android.os.Build; 7 | import android.os.Bundle; 8 | 9 | import mirror.RefBoolean; 10 | import mirror.RefClass; 11 | import mirror.RefLong; 12 | import mirror.RefObject; 13 | 14 | @TargetApi(Build.VERSION_CODES.KITKAT) 15 | public class SyncRequest { 16 | public static Class TYPE = RefClass.load(SyncRequest.class, android.content.SyncRequest.class); 17 | public static RefObject mAccountToSync; 18 | public static RefObject mAuthority; 19 | public static RefObject mExtras; 20 | public static RefBoolean mIsPeriodic; 21 | public static RefLong mSyncRunTimeSecs; 22 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ApplicationInfoL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ApplicationInfoL { 8 | public static Class TYPE = RefClass.load(ApplicationInfoL.class, ApplicationInfo.class); 9 | public static RefObject primaryCpuAbi; 10 | public static RefObject scanPublicSourceDir; 11 | public static RefObject scanSourceDir; 12 | public static RefObject splitPublicSourceDirs; 13 | public static RefObject splitSourceDirs; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ApplicationInfoN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ApplicationInfoN { 9 | public static Class TYPE = RefClass.load(ApplicationInfoN.class, ApplicationInfo.class); 10 | public static RefObject deviceProtectedDataDir; 11 | public static RefObject deviceEncryptedDataDir; 12 | public static RefObject credentialProtectedDataDir; 13 | public static RefObject credentialEncryptedDataDir; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ILauncherApps.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticMethod; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | public class ILauncherApps { 12 | 13 | public static final class Stub { 14 | public static Class TYPE = RefClass.load(ILauncherApps.class, "android.content.pm.ILauncherApps$Stub"); 15 | public static RefStaticMethod asInterface; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/IShortcutService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticMethod; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class IShortcutService { 13 | 14 | public static final class Stub { 15 | public static Class TYPE = RefClass.load(IShortcutService.class, "android.content.pm.IShortcutService$Stub"); 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/LauncherApps.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.PackageManager; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | import mirror.com.android.internal.os.UserManager; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class LauncherApps { 15 | 16 | public static Class TYPE = RefClass.load(LauncherApps.class, "android.content.pm.LauncherApps"); 17 | 18 | public static RefObject mPm; 19 | public static RefObject mService; 20 | public static RefObject mUserManager; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/PackageParserNougat.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import mirror.MethodReflectParams; 4 | import mirror.RefClass; 5 | import mirror.RefStaticMethod; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class PackageParserNougat { 12 | public static Class TYPE = RefClass.load(PackageParserNougat.class, "android.content.pm.PackageParser"); 13 | @MethodReflectParams({"android.content.pm.PackageParser$Package", "int"}) 14 | public static RefStaticMethod collectCertificates; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/PackageUserState.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefConstructor; 5 | 6 | public class PackageUserState { 7 | public static Class TYPE = RefClass.load(PackageUserState.class, "android.content.pm.PackageUserState"); 8 | public static RefConstructor ctor; 9 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ParceledListSlice.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.Parcelable; 4 | 5 | import java.util.List; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefConstructor; 9 | import mirror.RefMethod; 10 | import mirror.RefStaticObject; 11 | 12 | /** 13 | * @author Lody 14 | */ 15 | 16 | public class ParceledListSlice { 17 | public static RefStaticObject CREATOR; 18 | public static Class TYPE = RefClass.load(ParceledListSlice.class, "android.content.pm.ParceledListSlice"); 19 | public static RefMethod append; 20 | public static RefConstructor ctor; 21 | public static RefMethod isLastSlice; 22 | public static RefMethod populateList; 23 | public static RefMethod setLastSlice; 24 | public static RefMethod> getList; 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ParceledListSliceJBMR2.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.Parcelable; 4 | 5 | import java.util.List; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefConstructor; 9 | import mirror.RefMethod; 10 | import mirror.MethodParams; 11 | import mirror.RefStaticObject; 12 | 13 | /** 14 | * @author Lody 15 | */ 16 | 17 | public class ParceledListSliceJBMR2 { 18 | public static RefStaticObject CREATOR; 19 | public static Class TYPE = RefClass.load(ParceledListSliceJBMR2.class, "android.content.pm.ParceledListSlice"); 20 | @MethodParams({List.class}) 21 | public static RefConstructor ctor; 22 | public static RefMethod getList; 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/UserInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | 4 | import mirror.MethodParams; 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | import mirror.RefStaticInt; 8 | 9 | public class UserInfo { 10 | public static Class TYPE = RefClass.load(UserInfo.class, "android.content.pm.UserInfo"); 11 | public static RefStaticInt FLAG_PRIMARY; 12 | @MethodParams({int.class, String.class, int.class}) 13 | public static RefConstructor ctor; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/res/AssetManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.res; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefConstructor; 5 | import mirror.RefMethod; 6 | import mirror.MethodParams; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class AssetManager { 13 | public static Class TYPE = RefClass.load(AssetManager.class, android.content.res.AssetManager.class); 14 | public static RefConstructor ctor; 15 | @MethodParams(String.class) 16 | public static RefMethod addAssetPath; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/res/CompatibilityInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.res; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | import mirror.RefClass; 5 | import mirror.RefConstructor; 6 | import mirror.MethodParams; 7 | import mirror.RefStaticObject; 8 | 9 | public class CompatibilityInfo { 10 | public static Class TYPE = RefClass.load(CompatibilityInfo.class, "android.content.res.CompatibilityInfo"); 11 | @MethodParams({ApplicationInfo.class, int.class, int.class, boolean.class}) 12 | public static RefConstructor ctor; 13 | public static RefStaticObject DEFAULT_COMPATIBILITY_INFO; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/ddm/DdmHandleAppName.java: -------------------------------------------------------------------------------- 1 | package mirror.android.ddm; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class DdmHandleAppName { 8 | public static Class Class = RefClass.load(DdmHandleAppName.class, "android.ddm.DdmHandleAppName"); 9 | @MethodParams({String.class}) 10 | public static RefStaticMethod setAppName; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/ddm/DdmHandleAppNameJBMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.ddm; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class DdmHandleAppNameJBMR1 { 8 | public static Class Class = RefClass.load(DdmHandleAppNameJBMR1.class, "android.ddm.DdmHandleAppName"); 9 | @MethodParams({String.class, int.class}) 10 | public static RefStaticMethod setAppName; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/graphics/drawable/Icon.java: -------------------------------------------------------------------------------- 1 | package mirror.android.graphics.drawable; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | 9 | @TargetApi(Build.VERSION_CODES.M) 10 | public class Icon { 11 | public static final int TYPE_BITMAP = 1; 12 | public static final int TYPE_RESOURCE = 2; 13 | public static final int TYPE_DATA = 3; 14 | public static final int TYPE_URI = 4; 15 | 16 | public static Class TYPE = RefClass.load(Icon.class, android.graphics.drawable.Icon.class); 17 | public static RefObject mObj1; 18 | public static RefObject mString1; 19 | public static RefObject mType; 20 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/display/DisplayManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.display; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class DisplayManagerGlobal { 10 | public static Class TYPE = RefClass.load(DisplayManagerGlobal.class, "android.hardware.display.DisplayManagerGlobal"); 11 | public static RefStaticMethod getInstance; 12 | public static RefObject mDm; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/display/IDisplayManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.display; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IDisplayManager { 6 | public static Class TYPE = RefClass.load(IDisplayManager.class, "android.hardware.display.IDisplayManager"); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/fingerprint/IFingerprintService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.fingerprint; 2 | 3 | import android.os.*; 4 | 5 | import mirror.*; 6 | 7 | /** 8 | * Created by natsuki on 12/10/2017. 9 | */ 10 | 11 | public class IFingerprintService { 12 | 13 | public static Class TYPE = RefClass.load(IFingerprintService.class, "android.hardware.fingerprint.IFingerprintService"); 14 | 15 | public static class Stub { 16 | public static Class TYPE = RefClass.load(Stub.class, "android.hardware.fingerprint.IFingerprintService$Stub"); 17 | @MethodParams({IBinder.class}) 18 | public static RefStaticMethod asInterface; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/location/IContextHubService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | public class IContextHubService { 14 | public static Class TYPE = RefClass.load(IContextHubService.class, "android.hardware.location.IContextHubService"); 15 | 16 | public static class Stub { 17 | public static Class TYPE = RefClass.load(Stub.class, "android.hardware.location.IContextHubService$Stub"); 18 | @MethodParams({IBinder.class}) 19 | public static RefStaticMethod asInterface; 20 | } 21 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/location/ILocationManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.location; 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 ILocationManager { 11 | public static Class TYPE = RefClass.load(ILocationManager.class, "android.location.ILocationManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.location.ILocationManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/location/LocationRequestL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.location; 2 | 3 | import mirror.RefBoolean; 4 | import mirror.RefClass; 5 | import mirror.RefMethod; 6 | import mirror.RefObject; 7 | 8 | public class LocationRequestL { 9 | public static Class TYPE = RefClass.load(LocationRequestL.class, "android.location.LocationRequest"); 10 | public static RefBoolean mHideFromAppOps; 11 | public static RefObject mWorkSource; 12 | public static RefObject mProvider; 13 | public static RefMethod getProvider; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/AudioManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class AudioManager { 10 | public static Class TYPE = RefClass.load(AudioManager.class, android.media.AudioManager.class); 11 | public static RefStaticMethod getService; 12 | public static RefStaticObject sService; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/IAudioService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | import android.os.IBinder; 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.MethodParams; 7 | import mirror.RefStaticMethod; 8 | 9 | public class IAudioService { 10 | public static Class TYPE = RefClass.load(IAudioService.class, "android.media.IAudioService"); 11 | 12 | public static class Stub { 13 | public static Class TYPE = RefClass.load(Stub.class, "android.media.IAudioService$Stub"); 14 | @MethodParams({IBinder.class}) 15 | public static RefStaticMethod asInterface; 16 | } 17 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/IMediaRouterService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 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 IMediaRouterService { 11 | public static Class TYPE = RefClass.load(IMediaRouterService.class, "android.media.IMediaRouterService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.media.IMediaRouterService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/MediaRouter.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | import mirror.RefStaticObject; 8 | 9 | public class MediaRouter { 10 | public static Class TYPE = RefClass.load(MediaRouter.class, android.media.MediaRouter.class); 11 | public static RefStaticObject sStatic; 12 | 13 | public static class Static { 14 | public static Class TYPE = RefClass.load(Static.class, "android.media.MediaRouter$Static"); 15 | public static RefObject mAudioService; 16 | } 17 | 18 | public static class StaticKitkat { 19 | public static Class TYPE = RefClass.load(StaticKitkat.class, "android.media.MediaRouter$Static"); 20 | public static RefObject mMediaRouterService; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/session/ISessionManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media.session; 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 ISessionManager { 11 | public static Class TYPE = RefClass.load(ISessionManager.class, "android.media.session.ISessionManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.media.session.ISessionManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/IConnectivityManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | 11 | /** 12 | * @author Junelegency 13 | * 14 | */ 15 | public class IConnectivityManager { 16 | public static Class TYPE = RefClass.load(IConnectivityManager.class, "android.net.IConnectivityManager"); 17 | 18 | public static class Stub { 19 | public static Class TYPE = RefClass.load(Stub.class, "android.net.IConnectivityManager$Stub"); 20 | @MethodParams({IBinder.class}) 21 | public static RefStaticMethod asInterface; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/IWifiManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 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 IWifiManager { 11 | public static Class TYPE = RefClass.load(IWifiManager.class, "android.net.wifi.IWifiManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.net.wifi.IWifiManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/WifiScanner.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticObject; 5 | 6 | public final class WifiScanner { 7 | public static Class Class; 8 | public static RefStaticObject GET_AVAILABLE_CHANNELS_EXTRA; 9 | 10 | static { 11 | RefClass.load(WifiScanner.class, "android.net.wifi.WifiScanner"); 12 | } 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/WifiSsid.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | @TargetApi(Build.VERSION_CODES.KITKAT) 14 | public class WifiSsid { 15 | public static final Class TYPE = RefClass.load(WifiSsid.class, "android.net.wifi.WifiSsid"); 16 | public static RefStaticMethod createFromAsciiEncoded; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/BaseBundle.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | 9 | public class BaseBundle { 10 | public static Class TYPE = RefClass.load(BaseBundle.class, "android.os.BaseBundle"); 11 | public static RefObject mParcelledData; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Build.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefStaticObject; 6 | 7 | public class Build { 8 | public static Class TYPE = RefClass.load(Build.class, android.os.Build.class); 9 | public static RefStaticObject DEVICE; 10 | public static RefStaticObject SERIAL; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Bundle.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | import mirror.MethodParams; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class Bundle { 14 | public static Class TYPE = RefClass.load(Bundle.class, android.os.Bundle.class); 15 | 16 | @MethodParams({String.class, IBinder.class}) 17 | public static RefMethod putIBinder; 18 | 19 | @MethodParams({String.class}) 20 | public static RefMethod getIBinder; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/BundleICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | 9 | public class BundleICS { 10 | public static Class TYPE = RefClass.load(BundleICS.class, "android.os.Bundle"); 11 | public static RefObject mParcelledData; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Handler.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class Handler { 8 | public static Class TYPE = RefClass.load(Handler.class, "android.os.Handler"); 9 | public static RefObject mCallback; 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/INetworkManagementService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class INetworkManagementService { 11 | public static Class TYPE = RefClass.load(INetworkManagementService.class, "android.os.INetworkManagementService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.INetworkManagementService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/IPowerManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 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 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IPowerManager { 15 | public static Class TYPE = RefClass.load(IPowerManager.class, "android.os.IPowerManager"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IPowerManager$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/IUserManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 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 IUserManager { 11 | public static Class TYPE = RefClass.load(IUserManager.class, "android.os.IUserManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IUserManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Message.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import mirror.MethodParams; 4 | import mirror.RefClass; 5 | import mirror.RefMethod; 6 | import mirror.RefStaticMethod; 7 | 8 | public class Message { 9 | public static Class TYPE = RefClass.load(Message.class, android.os.Message.class); 10 | @MethodParams({int.class}) 11 | public static RefStaticMethod updateCheckRecycle; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Process.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class Process { 8 | public static Class TYPE = RefClass.load(Process.class, android.os.Process.class); 9 | @MethodParams({String.class}) 10 | public static RefStaticMethod setArgV0; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/ServiceManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import java.util.Map; 7 | 8 | import mirror.RefClass; 9 | import mirror.MethodParams; 10 | import mirror.RefStaticObject; 11 | import mirror.RefStaticMethod; 12 | 13 | public class ServiceManager { 14 | public static Class TYPE = RefClass.load(ServiceManager.class, "android.os.ServiceManager"); 15 | @MethodParams({String.class, IBinder.class}) 16 | public static RefStaticMethod addService; 17 | public static RefStaticMethod checkService; 18 | public static RefStaticMethod getIServiceManager; 19 | public static RefStaticMethod getService; 20 | public static RefStaticMethod listServices; 21 | public static RefStaticObject> sCache; 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/StrictMode.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefStaticInt; 6 | 7 | public class StrictMode { 8 | public static Class TYPE = RefClass.load(StrictMode.class, "android.os.StrictMode"); 9 | public static RefStaticInt sVmPolicyMask; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/mount/IMountService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os.mount; 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 IMountService { 11 | public static Class TYPE = RefClass.load(IMountService.class, "android.os.storage.IMountService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.storage.IMountService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/storage/IStorageManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os.storage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IStorageManager { 11 | public static Class Class = RefClass.load(IStorageManager.class, "android.os.storage.IStorageManager"); 12 | 13 | public static class Stub { 14 | public static Class Class = RefClass.load(Stub.class, "android.os.storage.IStorageManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/renderscript/RenderScriptCacheDir.java: -------------------------------------------------------------------------------- 1 | package mirror.android.renderscript; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class RenderScriptCacheDir { 11 | public static Class TYPE = RefClass.load(RenderScriptCacheDir.class, "android.renderscript.RenderScriptCacheDir"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceLP.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ReceiverResourceLP { 8 | public static Class TYPE = RefClass.load(ReceiverResourceLP.class, "android.rms.resource.ReceiverResource"); 9 | public static RefObject mResourceConfig; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceM.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ReceiverResourceM { 8 | public static Class TYPE = RefClass.load(ReceiverResourceM.class, "android.rms.resource.ReceiverResource"); 9 | public static RefObject mWhiteList; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import java.util.List; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | 9 | public class ReceiverResourceN { 10 | public static Class TYPE = RefClass.load(ReceiverResourceN.class, "android.rms.resource.ReceiverResource"); 11 | public static RefObject> mWhiteList; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/service/persistentdata/IPersistentDataBlockService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.service.persistentdata; 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 IPersistentDataBlockService { 11 | public static Class TYPE = RefClass.load(IPersistentDataBlockService.class, "android.service.persistentdata.IPersistentDataBlockService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.service.persistentdata.IPersistentDataBlockService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellIdentityCdma.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellIdentityCdma { 16 | public static Class TYPE = RefClass.load(CellIdentityCdma.class, android.telephony.CellIdentityCdma.class); 17 | public static RefConstructor ctor; 18 | public static RefInt mNetworkId; 19 | public static RefInt mSystemId; 20 | public static RefInt mBasestationId; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellIdentityGsm.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellIdentityGsm { 16 | public static Class TYPE = RefClass.load(CellIdentityGsm.class, android.telephony.CellIdentityGsm.class); 17 | public static RefConstructor ctor; 18 | public static RefInt mMcc; 19 | public static RefInt mMnc; 20 | public static RefInt mLac; 21 | public static RefInt mCid; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellInfoCdma.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | import android.telephony.CellSignalStrengthCdma; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefConstructor; 9 | import mirror.RefObject; 10 | 11 | /** 12 | * @author Lody 13 | */ 14 | 15 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 16 | public class CellInfoCdma { 17 | public static Class TYPE = RefClass.load(CellInfoCdma.class, android.telephony.CellInfoCdma.class); 18 | public static RefConstructor ctor; 19 | public static RefObject mCellIdentityCdma; 20 | public static RefObject mCellSignalStrengthCdma; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellInfoGsm.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellInfoGsm { 16 | public static Class TYPE = RefClass.load(CellInfoGsm.class, android.telephony.CellInfoGsm.class); 17 | public static RefConstructor ctor; 18 | public static RefObject mCellIdentityGsm; 19 | public static RefObject mCellSignalStrengthGsm; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellSignalStrengthCdma.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellSignalStrengthCdma { 16 | public static Class TYPE = RefClass.load(CellSignalStrengthCdma.class, android.telephony.CellSignalStrengthCdma.class); 17 | public static RefConstructor ctor; 18 | public static RefInt mCdmaDbm; 19 | public static RefInt mCdmaEcio; 20 | public static RefInt mEvdoDbm; 21 | public static RefInt mEvdoEcio; 22 | public static RefInt mEvdoSnr; 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellSignalStrengthGsm.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellSignalStrengthGsm { 16 | public static Class TYPE = RefClass.load(CellSignalStrengthGsm.class, android.telephony.CellSignalStrengthGsm.class); 17 | public static RefConstructor ctor; 18 | public static RefInt mSignalStrength; 19 | public static RefInt mBitErrorRate; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/NeighboringCellInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefInt; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class NeighboringCellInfo { 11 | public static Class TYPE = RefClass.load(NeighboringCellInfo.class, android.telephony.NeighboringCellInfo.class); 12 | public static RefInt mLac; 13 | public static RefInt mCid; 14 | public static RefInt mRssi; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/util/Singleton.java: -------------------------------------------------------------------------------- 1 | package mirror.android.util; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | import mirror.RefMethod; 7 | 8 | public class Singleton { 9 | public static Class TYPE = RefClass.load(Singleton.class, "android.util.Singleton"); 10 | public static RefMethod get; 11 | public static RefObject mInstance; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/CompatibilityInfoHolder.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import mirror.MethodReflectParams; 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | 8 | public class CompatibilityInfoHolder { 9 | public static Class Class = RefClass.load(CompatibilityInfoHolder.class, "android.view.CompatibilityInfoHolder"); 10 | @MethodReflectParams({"android.content.res.CompatibilityInfo"}) 11 | public static RefMethod set; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/Display.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class Display { 9 | public static Class TYPE = RefClass.load(Display.class, android.view.Display.class); 10 | public static RefStaticObject sWindowManager; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/DisplayAdjustments.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import mirror.MethodReflectParams; 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | 8 | public class DisplayAdjustments { 9 | public static Class Class = RefClass.load(DisplayAdjustments.class, "android.view.DisplayAdjustments"); 10 | @MethodReflectParams({"android.content.res.CompatibilityInfo"}) 11 | public static RefMethod setCompatibilityInfo; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/HardwareRenderer.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class HardwareRenderer { 11 | public static Class TYPE = RefClass.load(HardwareRenderer.class, "android.view.HardwareRenderer"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/IAutoFillManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author 陈磊. 12 | */ 13 | 14 | public class IAutoFillManager { 15 | 16 | public static Class TYPE = RefClass.load(IAutoFillManager.class, "android.view.autofill.IAutoFillManager"); 17 | 18 | public static class Stub { 19 | public static Class TYPE = RefClass.load(Stub.class, "android.view.autofill.IAutoFillManager$Stub"); 20 | @MethodParams(IBinder.class) 21 | public static RefStaticMethod asInterface; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/IGraphicsStats.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 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 IGraphicsStats { 11 | public static Class TYPE = RefClass.load(IGraphicsStats.class, "android.view.IGraphicsStats"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.view.IGraphicsStats$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/IWindowManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 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 IWindowManager { 11 | public static Class TYPE = RefClass.load(IWindowManager.class, "android.view.IWindowManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.view.IWindowManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/RenderScript.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import java.io.File; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefStaticMethod; 8 | 9 | public class RenderScript { 10 | public static Class TYPE = RefClass.load(RenderScript.class, android.renderscript.RenderScript.class); 11 | @MethodParams({File.class}) 12 | public static RefStaticMethod setupDiskCache; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/SurfaceControl.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefStaticMethod; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class SurfaceControl { 14 | 15 | public static Class TYPE = RefClass.load(SurfaceControl.class, "android.view.SurfaceControl"); 16 | 17 | @MethodParams({int.class/*width*/, int.class/*height*/}) 18 | public static RefStaticMethod screnshot; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/ThreadedRenderer.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ThreadedRenderer { 11 | public static Class TYPE = RefClass.load(ThreadedRenderer.class, "android.view.ThreadedRenderer"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/WindowManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class WindowManagerGlobal { 9 | public static Class TYPE = RefClass.load(WindowManagerGlobal.class, "android.view.WindowManagerGlobal"); 10 | public static RefStaticObject sWindowManagerService; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/webkit/IWebViewUpdateService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.webkit; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | 6 | /** 7 | * @author CodeHz 8 | */ 9 | 10 | public class IWebViewUpdateService { 11 | public static Class TYPE = RefClass.load(IWebViewUpdateService.class, "android.webkit.IWebViewUpdateService$Stub$Proxy"); 12 | 13 | public static RefMethod getCurrentWebViewPackageName; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/webkit/WebViewFactory.java: -------------------------------------------------------------------------------- 1 | package mirror.android.webkit; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticMethod; 5 | 6 | /** 7 | * @author CodeHz 8 | */ 9 | 10 | public class WebViewFactory { 11 | public static Class TYPE = RefClass.load(WebViewFactory.class, "android.webkit.WebViewFactory"); 12 | public static RefStaticMethod getUpdateService; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/widget/RemoteViews.java: -------------------------------------------------------------------------------- 1 | package mirror.android.widget; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import java.util.ArrayList; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class RemoteViews { 15 | public static Class TYPE = RefClass.load(RemoteViews.class, android.widget.RemoteViews.class); 16 | public static RefObject mApplication; 17 | public static RefObject> mActions; 18 | public static RefObject mPackage; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/widget/Toast.java: -------------------------------------------------------------------------------- 1 | package mirror.android.widget; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class Toast { 9 | public static Class TYPE = RefClass.load(Toast.class, android.widget.Toast.class); 10 | 11 | public static RefStaticObject sService; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/app/IAppOpsService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.app; 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 IAppOpsService { 11 | public static Class TYPE = RefClass.load(IAppOpsService.class, "com.android.internal.app.IAppOpsService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.app.IAppOpsService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/appwidget/IAppWidgetService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.appwidget; 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 IAppWidgetService { 11 | public static Class TYPE = RefClass.load(IAppWidgetService.class, "com.android.internal.appwidget.IAppWidgetService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.appwidget.IAppWidgetService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/content/ReferrerIntent.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.content; 2 | 3 | import android.content.Intent; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | import mirror.MethodParams; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ReferrerIntent { 14 | public static Class TYPE = RefClass.load(ReferrerIntent.class, "com.android.internal.content.ReferrerIntent"); 15 | @MethodParams({Intent.class, String.class}) 16 | public static RefConstructor ctor; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/os/IDropBoxManagerService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.os; 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 IDropBoxManagerService { 11 | public static Class TYPE = RefClass.load(IDropBoxManagerService.class, "com.android.internal.os.IDropBoxManagerService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.os.IDropBoxManagerService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/os/IVibratorService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.os; 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 IVibratorService { 11 | public static Class TYPE = RefClass.load(IVibratorService.class, "android.os.IVibratorService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IVibratorService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/os/UserManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.os; 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 UserManager { 11 | public static Class TYPE = RefClass.load(UserManager.class, "android.os.UserManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IUserManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/policy/PhoneWindow.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.policy; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class PhoneWindow { 9 | public static Class TYPE; 10 | public static RefStaticObject sWindowManager; 11 | 12 | static { 13 | TYPE = RefClass.load(PhoneWindow.class, "com.android.internal.policy.impl.PhoneWindow$WindowManagerHolder"); 14 | if (TYPE == null) { 15 | TYPE = RefClass.load(PhoneWindow.class, "com.android.internal.policy.PhoneWindow$WindowManagerHolder"); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/IMms.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 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 IMms { 11 | public static Class TYPE = RefClass.load(IMms.class, "com.android.internal.telephony.IMms"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.IMms$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/IPhoneSubInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 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 IPhoneSubInfo { 11 | public static Class TYPE = RefClass.load(IPhoneSubInfo.class, "com.android.internal.telephony.IPhoneSubInfo"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.IPhoneSubInfo$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ISms.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ISms { 11 | public static Class TYPE = RefClass.load(ISms.class, "com.android.internal.telephony.ISms"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.ISms$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ISub.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 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 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class ISub { 15 | public static Class TYPE = RefClass.load(ISub.class, "com.android.internal.telephony.ISub"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.ISub$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ITelephony.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 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 ITelephony { 11 | public static Class TYPE = RefClass.load(ITelephony.class, "com.android.internal.telephony.ITelephony"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.ITelephony$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ITelephonyRegistry.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ITelephonyRegistry { 11 | public static Class TYPE = RefClass.load(ITelephonyRegistry.class, "com.android.internal.telephony.ITelephonyRegistry"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(ITelephonyRegistry.Stub.class, "com.android.internal.telephony.ITelephonyRegistry$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/PhoneConstantsMtk.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticInt; 5 | 6 | public class PhoneConstantsMtk { 7 | public static Class TYPE = RefClass.load(PhoneConstantsMtk.class, "com.android.internal.telephony.PhoneConstants"); 8 | public static RefStaticInt GEMINI_SIM_NUM; 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/view/IInputMethodManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.view; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IInputMethodManager { 6 | public static Class TYPE = RefClass.load(IInputMethodManager.class, "com.android.internal.view.IInputMethodManager"); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/view/inputmethod/InputMethodManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.view.inputmethod; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class InputMethodManager { 9 | public static Class TYPE = RefClass.load(InputMethodManager.class, android.view.inputmethod.InputMethodManager.class); 10 | public static RefObject mService; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/dalvik/system/VMRuntime.java: -------------------------------------------------------------------------------- 1 | package mirror.dalvik.system; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | import mirror.MethodParams; 6 | import mirror.RefStaticMethod; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class VMRuntime { 13 | public static Class TYPE = RefClass.load(VMRuntime.class, "dalvik.system.VMRuntime"); 14 | public static RefStaticMethod getRuntime; 15 | @MethodParams({int.class}) 16 | public static RefMethod setTargetSdkVersion; 17 | public static RefMethod is64Bit; 18 | public static RefStaticMethod getCurrentInstructionSet; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/java/lang/ThreadGroup.java: -------------------------------------------------------------------------------- 1 | package mirror.java.lang; 2 | 3 | 4 | import java.util.List; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | public class ThreadGroup { 13 | public static Class TYPE = RefClass.load(ThreadGroup.class, java.lang.ThreadGroup.class); 14 | public static RefObject> groups; 15 | public static RefObject parent; 16 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/java/lang/ThreadGroupN.java: -------------------------------------------------------------------------------- 1 | package mirror.java.lang; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | public class ThreadGroupN { 11 | public static Class Class = RefClass.load(ThreadGroupN.class, java.lang.ThreadGroup.class); 12 | public static RefObject ngroups; 13 | public static RefObject groups; 14 | public static RefObject parent; 15 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/ForwardingOs.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class ForwardingOs { 11 | public static Class TYPE = RefClass.load(ForwardingOs.class, "libcore.io.ForwardingOs"); 12 | public static RefObject os; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/Libcore.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class Libcore { 11 | public static Class TYPE = RefClass.load(Libcore.class, "libcore.io.Libcore"); 12 | 13 | public static RefStaticObject os; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/Os.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class Os { 10 | public static Class TYPE = RefClass.load(Os.class, "libcore.io.Os"); 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_ABI := armeabi-v7a x86 2 | APP_PLATFORM := android-14 3 | APP_STL := gnustl_static 4 | APP_OPTIM := release 5 | VA_ROOT := $(call my-dir) 6 | NDK_MODULE_PATH := $(NDK_MODULE_PATH):$(VA_ROOT) -------------------------------------------------------------------------------- /lib/src/main/jni/Foundation/Path.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef FOUNDATION_PATH 6 | #define FOUNDATION_PATH 7 | 8 | #include 9 | 10 | int get_last_slash_pos(char *s); 11 | 12 | char* canonicalize_filename(const char *str); 13 | 14 | 15 | #endif //FOUNDATION_PATH 16 | -------------------------------------------------------------------------------- /lib/src/main/jni/Foundation/SymbolFinder.h: -------------------------------------------------------------------------------- 1 | #ifndef SYMBOL_FINDER 2 | #define SYMBOL_FINDER 3 | 4 | #include 5 | 6 | extern int find_name(pid_t pid, const char *name,const char *libn, unsigned long *addr); 7 | extern int find_libbase(pid_t pid, const char *libn, unsigned long *addr); 8 | #endif 9 | -------------------------------------------------------------------------------- /lib/src/main/jni/Foundation/VMPatch.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef FOUNDATION_PATH 6 | #define FOUNDATION_PATH 7 | 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include "Jni/Helper.h" 17 | 18 | using namespace facebook::jni; 19 | 20 | enum METHODS { 21 | OPEN_DEX = 0, CAMERA_SETUP, AUDIO_NATIVE_CHECK_PERMISSION 22 | }; 23 | 24 | void hookAndroidVM(JArrayClass javaMethods, 25 | jstring packageName, jboolean isArt, jint apiLevel, jint cameraMethodType); 26 | 27 | void *getDvmOrArtSOHandle(); 28 | 29 | 30 | #endif //NDK_HOOK_NATIVE_H 31 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build/ 3 | darwin.ios.release.mk 4 | .idea/ 5 | .vscode/ 6 | cmake-build-debug/ 7 | MachoParser.xcworkspace/ 8 | 9 | # Prerequisites 10 | *.d 11 | 12 | # Object files 13 | *.o 14 | *.ko 15 | *.obj 16 | *.elf 17 | 18 | # Linker output 19 | *.ilk 20 | *.map 21 | *.exp 22 | 23 | # Precompiled Headers 24 | *.gch 25 | *.pch 26 | 27 | # Libraries 28 | *.lib 29 | *.a 30 | *.la 31 | *.lo 32 | 33 | # Shared objects (inc. Windows DLLs) 34 | *.dll 35 | *.so 36 | *.so.* 37 | *.dylib 38 | 39 | # Executables 40 | *.exe 41 | *.out 42 | *.app 43 | *.i*86 44 | *.x86_64 45 | *.hex 46 | 47 | # Debug files 48 | *.dSYM/ 49 | *.su 50 | *.idb 51 | *.pdb 52 | 53 | # Kernel Module Compile Results 54 | *.mod* 55 | *.cmd 56 | .tmp_versions/ 57 | modules.order 58 | Module.symvers 59 | Mkfile.old 60 | dkms.conf 61 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "tools/deps/MachoParser"] 2 | path = tools/deps/MachoParser 3 | url = https://github.com/jmpews/MachoParser.git 4 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/arch-arm/instructions.c: -------------------------------------------------------------------------------- 1 | #include "instructions.h" 2 | #include 3 | 4 | zuint32 get_insn_sub(zuint32 insn, int start, int length) { return (insn >> start) & ((1 << length) - 1); } 5 | 6 | zbool insn_equal(zuint32 insn, char *opstr) { 7 | zuint32 mask = 0, value = 0; 8 | zsize length = strlen(opstr); 9 | int i, j; 10 | for (i = length - 1, j = 0; i >= 0 && j < length; i--, j++) { 11 | if (opstr[i] == 'x') { 12 | mask = mask | (0 << j); 13 | } else if (opstr[i] == '0') { 14 | mask = mask | (1 << j); 15 | } else if (opstr[i] == '1') { 16 | value = value | (1 << j); 17 | mask = mask | (1 << j); 18 | } 19 | } 20 | return (insn & mask) == value; 21 | } -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/arch-arm64/instructions.c: -------------------------------------------------------------------------------- 1 | #include "instructions.h" 2 | #include 3 | 4 | zuint32 get_insn_sub(zuint32 insn, int start, int length) { return (insn >> start) & ((1 << length) - 1); } 5 | 6 | zbool insn_equal(zuint32 insn, char *opstr) { 7 | zuint32 mask = 0, value = 0; 8 | zsize length = strlen(opstr); 9 | int i, j; 10 | for (i = length - 1, j = 0; i >= 0 && j < length; i--, j++) { 11 | if (opstr[i] == 'x') { 12 | mask = mask | (0 << j); 13 | } else if (opstr[i] == '0') { 14 | mask = mask | (1 << j); 15 | } else if (opstr[i] == '1') { 16 | value = value | (1 << j); 17 | mask = mask | (1 << j); 18 | } 19 | } 20 | return (insn & mask) == value; 21 | } -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/arch-x86/instructions.c: -------------------------------------------------------------------------------- 1 | #include "instructions.h" 2 | #include 3 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/arch-x86/regs-x86.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 jmpews 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "regs-x86.h" 18 | 19 | void zz_x86_register_describe(ZzX86Reg reg, ZzX86RegInfo *ri) { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/backend-arm/interceptor-template-arm.s: -------------------------------------------------------------------------------- 1 | // .section __TEXT,__text,regular,pure_instructions 2 | // .ios_version_min 11, 0 3 | .align 4 4 | .globl _ctx_save 5 | .globl _ctx_restore 6 | .globl _enter_thunk_template 7 | .globl _leave_thunk_template 8 | .globl _on_enter_trampoline_template 9 | .globl _on_invoke_trampoline_template 10 | .globl _on_leave_trampoline_template 11 | 12 | 13 | 14 | _on_enter_trampoline_template: 15 | sub sp, #0xc 16 | str r1, [sp, #0x0] 17 | ldr r1, [pc, #0x0] 18 | b #0x2 19 | .long 0x0 20 | .long 0x0 21 | str r1, [sp, #0x4] 22 | ldr r1, [sp, #0x0] 23 | add sp, #0x4 24 | ldr.w pc, [pc, #0x2] 25 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/platforms/backend-x86/interceptor-template-x86.s: -------------------------------------------------------------------------------- 1 | // .section __TEXT,__text,regular,pure_instructions 2 | // .ios_version_min 11, 0 3 | .align 4 4 | .globl _ctx_save 5 | .globl _ctx_restore 6 | .globl _enter_thunk_template 7 | .globl _leave_thunk_template 8 | .globl _on_enter_trampoline_template 9 | .globl _on_invoke_trampoline_template 10 | .globl _on_leave_trampoline_template 11 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/zzdeps/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ 3 | .vscode/ 4 | cmake-build-debug/ 5 | CMakeLists.txt 6 | 7 | # Prerequisites 8 | *.d 9 | 10 | # Object files 11 | *.o 12 | *.ko 13 | *.obj 14 | *.elf 15 | 16 | # Linker output 17 | *.ilk 18 | *.map 19 | *.exp 20 | 21 | # Precompiled Headers 22 | *.gch 23 | *.pch 24 | 25 | # Libraries 26 | *.lib 27 | *.a 28 | *.la 29 | *.lo 30 | 31 | # Shared objects (inc. Windows DLLs) 32 | *.dll 33 | *.so 34 | *.so.* 35 | *.dylib 36 | 37 | # Executables 38 | *.exe 39 | *.out 40 | *.app 41 | *.i*86 42 | *.x86_64 43 | *.hex 44 | 45 | # Debug files 46 | *.dSYM/ 47 | *.su 48 | *.idb 49 | *.pdb 50 | 51 | # Kernel Module Compile Results 52 | *.mod* 53 | *.cmd 54 | .tmp_versions/ 55 | modules.order 56 | Module.symvers 57 | Mkfile.old 58 | dkms.conf 59 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/zzdeps/README.md: -------------------------------------------------------------------------------- 1 | ## zzdeps 2 | 3 | common deps, C/C++ is ok and include darwin & common. 4 | 5 | #### common deps 6 | 7 | os independent. 8 | 9 | #### darwin deps 10 | 11 | about darwin. 12 | 13 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/zzdeps/linux/memory-utils-linux.h: -------------------------------------------------------------------------------- 1 | #ifndef zzdeps_linux_memory_utils_linux_h 2 | #define zzdeps_linux_memory_utils_linux_h 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "../zz.h" 9 | 10 | zpointer zz_linux_vm_search_code_cave(zaddr address, zsize range_size, zsize size); 11 | 12 | #endif -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/src/zzdeps/memory-utils.h: -------------------------------------------------------------------------------- 1 | #ifndef zzdeps_memory_utils_h 2 | #define zzdeps_memory_utils_h 3 | 4 | #include "zz.h" 5 | 6 | typedef struct _MemoryLayout { 7 | int size; 8 | struct { 9 | int flags; 10 | zpointer start; 11 | zpointer end; 12 | } mem[4096]; 13 | } MemoryLayout; 14 | 15 | #endif -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/tests/arm-insn-fix/makefile: -------------------------------------------------------------------------------- 1 | NO_COLOR=\x1b[0m 2 | OK_COLOR=\x1b[32;01m 3 | ERROR_COLOR=\x1b[31;01m 4 | WARN_COLOR=\x1b[33;01m 5 | 6 | 7 | HOOKZZ_INCLUDE_DIR := -I$(abspath ../../include) -I$(abspath ../../src) 8 | HOOKZZ_LIB_DIR := -L$(abspath ../../build/ios-armv7) 9 | 10 | ZZ_GCC_TEST := $(shell xcrun --sdk iphoneos --find clang) -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -arch armv7 -O0 -g 11 | 12 | # -undefined dynamic_lookup 13 | test: 14 | @$(ZZ_GCC_TEST) $(HOOKZZ_INCLUDE_DIR) -c test_insn_fix.c -o test_insn_fix.o 15 | @$(ZZ_GCC_TEST) -dynamiclib $(HOOKZZ_LIB_DIR) -lhookzz.static test_insn_fix.o -o test_insn_fix.dylib 16 | @echo "$(OK_COLOR)build [test_insn_fix.dylib] success for armv7! $(NO_COLOR)" 17 | clean: 18 | rm -rf test_insn_fix.o 19 | rm -rf test_insn_fix.dylib 20 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/tests/arm64-insn-fix/makefile: -------------------------------------------------------------------------------- 1 | NO_COLOR=\x1b[0m 2 | OK_COLOR=\x1b[32;01m 3 | ERROR_COLOR=\x1b[31;01m 4 | WARN_COLOR=\x1b[33;01m 5 | 6 | 7 | HOOKZZ_INCLUDE_DIR := -I$(abspath ../../include) -I$(abspath ../../src) 8 | HOOKZZ_LIB_DIR := -L$(abspath ../../build/ios-arm64) 9 | 10 | ZZ_GCC_TEST := $(shell xcrun --sdk iphoneos --find clang) -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -arch arm64 -O0 -g 11 | 12 | # -undefined dynamic_lookup 13 | test: 14 | @$(ZZ_GCC_TEST) $(HOOKZZ_INCLUDE_DIR) -c test_insn_fix.c -o test_insn_fix.o 15 | @$(ZZ_GCC_TEST) -dynamiclib $(HOOKZZ_LIB_DIR) -lhookzz.static test_insn_fix.o -o test_insn_fix.dylib 16 | @echo "$(OK_COLOR)build [test_insn_fix.dylib] success for arm64! $(NO_COLOR)" 17 | clean: 18 | rm -rf test_insn_fix.o 19 | rm -rf test_insn_fix.dylib 20 | -------------------------------------------------------------------------------- /lib/src/main/jni/HookZz/tools/ZzSolidifyHook/solidifyhook: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxxyanchenxxx/VirtualAppEx/70bf11c632b2a59f44f61b377ab25a23e71778bc/lib/src/main/jni/HookZz/tools/ZzSolidifyHook/solidifyhook -------------------------------------------------------------------------------- /lib/src/main/jni/Jni/Helper.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef NDK_LOG_H 6 | #define NDK_LOG_H 7 | 8 | #include 9 | 10 | #define NATIVE_METHOD(func_ptr, func_name, signature) { func_name, signature, reinterpret_cast(func_ptr) } 11 | 12 | class ScopeUtfString { 13 | public: 14 | ScopeUtfString(jstring j_str) : _j_str(j_str), 15 | _c_str(facebook::jni::Environment::current()->GetStringUTFChars(j_str, NULL)) { 16 | } 17 | 18 | const char *c_str() { 19 | return _c_str; 20 | } 21 | 22 | ~ScopeUtfString() { 23 | facebook::jni::Environment::current()->ReleaseStringUTFChars(_j_str, _c_str); 24 | } 25 | 26 | private: 27 | jstring _j_str; 28 | const char *_c_str; 29 | }; 30 | 31 | #endif //NDK_LOG_H 32 | -------------------------------------------------------------------------------- /lib/src/main/jni/Jni/VAJni.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef NDK_CORE_H 6 | #define NDK_CORE_H 7 | 8 | #include 9 | #include 10 | 11 | 12 | #include "Helper.h" 13 | #include "Foundation/VMPatch.h" 14 | #include "Foundation/IOUniformer.h" 15 | 16 | extern alias_ref nativeEngineClass; 17 | 18 | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved); 19 | JNIEXPORT void JNICALL JNI_OnUnload(JavaVM* vm, void* reserved); 20 | 21 | 22 | #endif //NDK_CORE_H 23 | -------------------------------------------------------------------------------- /lib/src/main/jni/Substrate/SubstrateHook.h: -------------------------------------------------------------------------------- 1 | #ifndef __SUBSTRATEHOOK_H__ 2 | #define __SUBSTRATEHOOK_H__ 3 | 4 | 5 | #include 6 | 7 | #define _extern extern "C" __attribute__((__visibility__("default"))) 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | void MSHookFunction(void *symbol, void *replace, void **result); 14 | 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/BUCK: -------------------------------------------------------------------------------- 1 | include_defs("//ReactAndroid/DEFS") 2 | 3 | # This target is only used in open source 4 | if IS_OSS_BUILD: 5 | cxx_library( 6 | name = 'jni', 7 | soname = 'libfb.$(ext)', 8 | srcs = glob(['*.cpp', 'jni/*.cpp', 'lyra/*.cpp']), 9 | header_namespace = '', 10 | compiler_flags = [ 11 | '-fno-omit-frame-pointer', 12 | '-fexceptions', 13 | '-Wall', 14 | '-Werror', 15 | '-std=c++11', 16 | '-DDISABLE_CPUCAP', 17 | '-DDISABLE_XPLAT', 18 | ], 19 | exported_headers = subdir_glob([ 20 | ('include', 'fb/**/*.h'), 21 | ('include', 'jni/*.h'), 22 | ]), 23 | deps = [ 24 | JNI_TARGET, 25 | ], 26 | visibility = ['PUBLIC'], 27 | ) 28 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/Doxyfile: -------------------------------------------------------------------------------- 1 | PROJECT_NAME = "Facebook Android Support" 2 | JAVADOC_AUTOBRIEF = YES 3 | EXTRACT_ALL = YES 4 | RECURSIVE = YES 5 | EXCLUDE = tests 6 | EXCLUDE_PATTERNS = *.cpp 7 | GENERATE_HTML = YES 8 | GENERATE_LATEX = NO 9 | ENABLE_PREPROCESSING = YES 10 | HIDE_UNDOC_MEMBERS = YES 11 | HIDE_SCOPE_NAMES = YES 12 | HIDE_FRIEND_COMPOUNDS = YES 13 | HIDE_UNDOC_CLASSES = YES 14 | SHOW_INCLUDE_FILES = NO 15 | #ENABLED_SECTIONS = INTERNAL 16 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/Build.h: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include 6 | 7 | #if defined(__ANDROID__) 8 | # include 9 | #endif 10 | 11 | namespace facebook { 12 | namespace build { 13 | 14 | struct Build { 15 | static int getAndroidSdk() { 16 | static auto android_sdk = ([] { 17 | char sdk_version_str[PROP_VALUE_MAX]; 18 | __system_property_get("ro.build.version.sdk", sdk_version_str); 19 | return atoi(sdk_version_str); 20 | })(); 21 | return android_sdk; 22 | } 23 | }; 24 | 25 | } // build 26 | } // facebook 27 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/Doxyfile: -------------------------------------------------------------------------------- 1 | PROJECT_NAME = "Facebook JNI" 2 | PROJECT_BRIEF = "Helper library to provide safe and convenient access to JNI with very low overhead" 3 | JAVADOC_AUTOBRIEF = YES 4 | EXTRACT_ALL = YES 5 | RECURSIVE = YES 6 | EXCLUDE = tests Asserts.h Countable.h GlobalReference.h LocalReference.h LocalString.h Registration.h WeakReference.h jni_helpers.h Environment.h 7 | EXCLUDE_PATTERNS = *-inl.h *.cpp 8 | GENERATE_HTML = YES 9 | GENERATE_LATEX = NO 10 | ENABLE_PREPROCESSING = YES 11 | HIDE_UNDOC_MEMBERS = YES 12 | HIDE_SCOPE_NAMES = YES 13 | HIDE_FRIEND_COMPOUNDS = YES 14 | HIDE_UNDOC_CLASSES = YES 15 | SHOW_INCLUDE_FILES = NO 16 | PREDEFINED = LOG_TAG=fbjni 17 | EXAMPLE_PATH = samples 18 | #ENABLED_SECTIONS = INTERNAL 19 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/fbjni.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #include 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/fbjni/File.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #include "CoreClasses.h" 13 | 14 | namespace facebook { 15 | namespace jni { 16 | 17 | class JFile : public JavaClass { 18 | public: 19 | static constexpr const char* kJavaDescriptor = "Ljava/io/File;"; 20 | 21 | // Define a method that calls into the represented Java class 22 | std::string getAbsolutePath() { 23 | static auto method = getClass()->getMethod("getAbsolutePath"); 24 | return method(self())->toStdString(); 25 | } 26 | 27 | }; 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/noncopyable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | namespace facebook { 13 | 14 | struct noncopyable { 15 | noncopyable(const noncopyable&) = delete; 16 | noncopyable& operator=(const noncopyable&) = delete; 17 | protected: 18 | noncopyable() = default; 19 | }; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/nonmovable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | namespace facebook { 13 | 14 | struct nonmovable { 15 | nonmovable(nonmovable&&) = delete; 16 | nonmovable& operator=(nonmovable&&) = delete; 17 | protected: 18 | nonmovable() = default; 19 | }; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/visibility.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #define FBEXPORT __attribute__((visibility("default"))) 13 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/jni/JniTerminateHandler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #include 13 | 14 | namespace facebook { 15 | namespace jni { 16 | 17 | void FBEXPORT installTerminateHandler(); 18 | }}; 19 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/OnLoad.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | using namespace facebook::jni; 16 | 17 | void initialize_fbjni() { 18 | CountableOnLoad(Environment::current()); 19 | HybridDataOnLoad(); 20 | JNativeRunnable::OnLoad(); 21 | ThreadScope::OnLoad(); 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/BUCK: -------------------------------------------------------------------------------- 1 | include_defs("//ReactAndroid/DEFS") 2 | 3 | java_library( 4 | name = "java", 5 | srcs = glob(["**/*.java"]), 6 | visibility = ["PUBLIC"], 7 | deps = [ 8 | "//java/com/facebook/proguard/annotations:annotations", 9 | ], 10 | ) 11 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/CppException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | package fb.jni.java; 11 | 12 | import com.facebook.proguard.annotations.DoNotStrip; 13 | 14 | @DoNotStrip 15 | public class CppException extends RuntimeException { 16 | @DoNotStrip 17 | public CppException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/CppSystemErrorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | package fb.jni.java; 11 | 12 | import com.facebook.proguard.annotations.DoNotStrip; 13 | 14 | @DoNotStrip 15 | public class CppSystemErrorException extends CppException { 16 | int errorCode; 17 | 18 | @DoNotStrip 19 | public CppSystemErrorException(String message, int errorCode) { 20 | super(message); 21 | this.errorCode = errorCode; 22 | } 23 | 24 | public int getErrorCode() { 25 | return errorCode; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/UnknownCppException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | package fb.jni.java; 11 | 12 | import com.facebook.proguard.annotations.DoNotStrip; 13 | 14 | @DoNotStrip 15 | public class UnknownCppException extends CppException { 16 | @DoNotStrip 17 | public UnknownCppException() { 18 | super("Unknown"); 19 | } 20 | 21 | @DoNotStrip 22 | public UnknownCppException(String message) { 23 | super(message); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/onload.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #include 11 | #ifndef DISABLE_CPUCAP 12 | #include 13 | #endif 14 | #include 15 | 16 | using namespace facebook::jni; 17 | 18 | void initialize_xplatinit(); 19 | void initialize_fbjni(); 20 | 21 | JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { 22 | return facebook::jni::initialize(vm, [] { 23 | initialize_fbjni(); 24 | #ifndef DISABLE_XPLAT 25 | initialize_xplatinit(); 26 | #endif 27 | #ifndef DISABLE_CPUCAP 28 | initialize_cpucapabilities(); 29 | #endif 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /lib/src/main/res/layout/choose_account_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | 12 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /lib/src/main/res/layout/custom_notification_lite.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | -------------------------------------------------------------------------------- /lib/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -1px 4 | 416dp 5 | 6 | 7 | 64dp 8 | 8dp 9 | -1dp 10 | 11 | 256dp 12 | 4dp 13 | 14 | 128dp 15 | 16 | -------------------------------------------------------------------------------- /lib/src/main/res/values/integer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 4 | -------------------------------------------------------------------------------- /lib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | :x 4 | VirtualPackage Installer 5 | Admin 6 | Choose 7 | Chooser is Empty 8 | No find applications 9 | Add account 10 | 11 | -------------------------------------------------------------------------------- /lib/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 13 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':lib', ':app' 2 | --------------------------------------------------------------------------------