├── .gitignore ├── LICENSE ├── README.md ├── SootFXPy ├── converter.py ├── main.py └── requirements.txt ├── config.yaml ├── dependencies ├── install_dependencies.sh └── soot-infoflow-android-2.5.1.jar ├── paper_preprint.pdf ├── pom.xml └── src └── main ├── java ├── api │ ├── CLI.java │ ├── Config.java │ ├── FeatureDescription.java │ ├── FeatureGroup.java │ ├── FeatureResource.java │ ├── SootFX.java │ └── SootFXEntryPoint.java ├── core │ ├── fx │ │ ├── FxUtil.java │ │ ├── base │ │ │ ├── ClassFEU.java │ │ │ ├── Feature.java │ │ │ ├── FeatureExtractionUnit.java │ │ │ ├── ManifestFEU.java │ │ │ ├── MethodFEU.java │ │ │ └── WholeProgramFEU.java │ │ ├── classbased │ │ │ ├── ClassAccessModifier.java │ │ │ ├── ClassContainsField.java │ │ │ ├── ClassContainsMethod.java │ │ │ ├── ClassFieldCount.java │ │ │ ├── ClassMethodCount.java │ │ │ ├── ClassNameContains.java │ │ │ ├── ClassNameEndsWith.java │ │ │ ├── ClassPackageNameEquals.java │ │ │ ├── IsAbstractClass.java │ │ │ ├── IsAnonymousClass.java │ │ │ ├── IsEnumClass.java │ │ │ ├── IsFinalClass.java │ │ │ ├── IsInnerClass.java │ │ │ ├── IsInterfaceClass.java │ │ │ └── IsStaticClass.java │ │ ├── manifestbased │ │ │ ├── ManifestActivityCount.java │ │ │ ├── ManifestActivityNameContains.java │ │ │ ├── ManifestLaunchableActivityCount.java │ │ │ ├── ManifestServiceCount.java │ │ │ ├── permission │ │ │ │ ├── ManifestPermAcceptHandover.java │ │ │ │ ├── ManifestPermAccessBackgroundLocation.java │ │ │ │ ├── ManifestPermAccessBlobsAcrossUsers.java │ │ │ │ ├── ManifestPermAccessCheckinProperties.java │ │ │ │ ├── ManifestPermAccessCoarseLocation.java │ │ │ │ ├── ManifestPermAccessFineLocation.java │ │ │ │ ├── ManifestPermAccessMediaLocation.java │ │ │ │ ├── ManifestPermAccessNetworkState.java │ │ │ │ ├── ManifestPermAccessWifiState.java │ │ │ │ ├── ManifestPermAccountManager.java │ │ │ │ ├── ManifestPermActivityRecognition.java │ │ │ │ ├── ManifestPermAddVoicemail.java │ │ │ │ ├── ManifestPermAnswerPhoneCalls.java │ │ │ │ ├── ManifestPermBatteryStats.java │ │ │ │ ├── ManifestPermBindAccessibilityService.java │ │ │ │ ├── ManifestPermBindAppwidget.java │ │ │ │ ├── ManifestPermBindAutofillService.java │ │ │ │ ├── ManifestPermBindCallRedirectionService.java │ │ │ │ ├── ManifestPermBindCarrierMessagingClientService.java │ │ │ │ ├── ManifestPermBindCarrierMessagingService.java │ │ │ │ ├── ManifestPermBindCarrierService.java │ │ │ │ ├── ManifestPermBindChooserTargetService.java │ │ │ │ ├── ManifestPermBindCompanionDeviceService.java │ │ │ │ ├── ManifestPermBindConditionProviderService.java │ │ │ │ ├── ManifestPermBindControls.java │ │ │ │ ├── ManifestPermBindDeviceAdmin.java │ │ │ │ ├── ManifestPermBindDreamService.java │ │ │ │ ├── ManifestPermBindIncallService.java │ │ │ │ ├── ManifestPermBindInputMethod.java │ │ │ │ ├── ManifestPermBindMidiDeviceService.java │ │ │ │ ├── ManifestPermBindNfcService.java │ │ │ │ ├── ManifestPermBindNotificationListenerService.java │ │ │ │ ├── ManifestPermBindPrintService.java │ │ │ │ ├── ManifestPermBindQuickAccessWalletService.java │ │ │ │ ├── ManifestPermBindQuickSettingsTile.java │ │ │ │ ├── ManifestPermBindRemoteviews.java │ │ │ │ ├── ManifestPermBindScreeningService.java │ │ │ │ ├── ManifestPermBindTelecomConnectionService.java │ │ │ │ ├── ManifestPermBindTextService.java │ │ │ │ ├── ManifestPermBindTvInput.java │ │ │ │ ├── ManifestPermBindVisualVoicemailService.java │ │ │ │ ├── ManifestPermBindVoiceInteraction.java │ │ │ │ ├── ManifestPermBindVpnService.java │ │ │ │ ├── ManifestPermBindVrListenerService.java │ │ │ │ ├── ManifestPermBindWallpaper.java │ │ │ │ ├── ManifestPermBluetooth.java │ │ │ │ ├── ManifestPermBluetoothAdmin.java │ │ │ │ ├── ManifestPermBluetoothAdvertise.java │ │ │ │ ├── ManifestPermBluetoothConnect.java │ │ │ │ ├── ManifestPermBluetoothPrivileged.java │ │ │ │ ├── ManifestPermBluetoothScan.java │ │ │ │ ├── ManifestPermBodySensors.java │ │ │ │ ├── ManifestPermBroadcastPackageRemoved.java │ │ │ │ ├── ManifestPermBroadcastSms.java │ │ │ │ ├── ManifestPermBroadcastSticky.java │ │ │ │ ├── ManifestPermBroadcastWapPush.java │ │ │ │ ├── ManifestPermCallCompanionApp.java │ │ │ │ ├── ManifestPermCallPhone.java │ │ │ │ ├── ManifestPermCallPrivileged.java │ │ │ │ ├── ManifestPermCamera.java │ │ │ │ ├── ManifestPermCaptureAudioOutput.java │ │ │ │ ├── ManifestPermChangeComponentEnabledState.java │ │ │ │ ├── ManifestPermChangeConfiguration.java │ │ │ │ ├── ManifestPermChangeNetworkState.java │ │ │ │ ├── ManifestPermChangeWifiMulticastState.java │ │ │ │ ├── ManifestPermChangeWifiState.java │ │ │ │ ├── ManifestPermClearAppCache.java │ │ │ │ ├── ManifestPermControlLocationUpdates.java │ │ │ │ ├── ManifestPermDeleteCacheFiles.java │ │ │ │ ├── ManifestPermDeletePackages.java │ │ │ │ ├── ManifestPermDiagnostic.java │ │ │ │ ├── ManifestPermDisableKeyguard.java │ │ │ │ ├── ManifestPermDump.java │ │ │ │ ├── ManifestPermExpandStatusBar.java │ │ │ │ ├── ManifestPermFactoryTest.java │ │ │ │ ├── ManifestPermForegroundService.java │ │ │ │ ├── ManifestPermGetAccounts.java │ │ │ │ ├── ManifestPermGetAccountsPrivileged.java │ │ │ │ ├── ManifestPermGetPackageSize.java │ │ │ │ ├── ManifestPermGetTasks.java │ │ │ │ ├── ManifestPermGlobalSearch.java │ │ │ │ ├── ManifestPermHideOverlayWindows.java │ │ │ │ ├── ManifestPermHighSamplingRateSensors.java │ │ │ │ ├── ManifestPermInstallLocationProvider.java │ │ │ │ ├── ManifestPermInstallPackages.java │ │ │ │ ├── ManifestPermInstallShortcut.java │ │ │ │ ├── ManifestPermInstantAppForegroundService.java │ │ │ │ ├── ManifestPermInteractionAcrossProfiles.java │ │ │ │ ├── ManifestPermInternet.java │ │ │ │ ├── ManifestPermKillBackgroundProcesses.java │ │ │ │ ├── ManifestPermLoaderUsageStats.java │ │ │ │ ├── ManifestPermLocationExtraCommands.java │ │ │ │ ├── ManifestPermLocationHardware.java │ │ │ │ ├── ManifestPermManageDocuments.java │ │ │ │ ├── ManifestPermManageExternalStorage.java │ │ │ │ ├── ManifestPermManageMedia.java │ │ │ │ ├── ManifestPermManageOngoingCalls.java │ │ │ │ ├── ManifestPermManageOwnCalls.java │ │ │ │ ├── ManifestPermMasterClear.java │ │ │ │ ├── ManifestPermMediaContentControl.java │ │ │ │ ├── ManifestPermModifyAudioSettings.java │ │ │ │ ├── ManifestPermModifyPhoneState.java │ │ │ │ ├── ManifestPermMountFormatFilesystems.java │ │ │ │ ├── ManifestPermMountUnmountFilesystems.java │ │ │ │ ├── ManifestPermNFC.java │ │ │ │ ├── ManifestPermNFCPreferredPaymentInfo.java │ │ │ │ ├── ManifestPermNFCTransactionEvent.java │ │ │ │ ├── ManifestPermNotificationPolicy.java │ │ │ │ ├── ManifestPermPackageUsageStats.java │ │ │ │ ├── ManifestPermPersistentActivity.java │ │ │ │ ├── ManifestPermProcessOutgoingCalls.java │ │ │ │ ├── ManifestPermQueryAllPackages.java │ │ │ │ ├── ManifestPermReadCalendar.java │ │ │ │ ├── ManifestPermReadCallLog.java │ │ │ │ ├── ManifestPermReadContacts.java │ │ │ │ ├── ManifestPermReadExternalStorage.java │ │ │ │ ├── ManifestPermReadInputState.java │ │ │ │ ├── ManifestPermReadLogs.java │ │ │ │ ├── ManifestPermReadPhoneNumbers.java │ │ │ │ ├── ManifestPermReadPhoneState.java │ │ │ │ ├── ManifestPermReadPrecisePhoneState.java │ │ │ │ ├── ManifestPermReadSms.java │ │ │ │ ├── ManifestPermReadSyncSettings.java │ │ │ │ ├── ManifestPermReadSyncStats.java │ │ │ │ ├── ManifestPermReadVoicemail.java │ │ │ │ ├── ManifestPermReboot.java │ │ │ │ ├── ManifestPermReceiveBootCompleted.java │ │ │ │ ├── ManifestPermReceiveMms.java │ │ │ │ ├── ManifestPermReceiveSms.java │ │ │ │ ├── ManifestPermReceiveWapPush.java │ │ │ │ ├── ManifestPermRecordAudio.java │ │ │ │ ├── ManifestPermReorderTasks.java │ │ │ │ ├── ManifestPermRequestCompanionProfileWatch.java │ │ │ │ ├── ManifestPermRequestCompanionRunInBackground.java │ │ │ │ ├── ManifestPermRequestCompanionStartForegroundServicesFromBackground.java │ │ │ │ ├── ManifestPermRequestCompanionUseDataInBackground.java │ │ │ │ ├── ManifestPermRequestDeletePackages.java │ │ │ │ ├── ManifestPermRequestIgnoreBatteryOptimizations.java │ │ │ │ ├── ManifestPermRequestInstallPackages.java │ │ │ │ ├── ManifestPermRequestObserveCompanionDevicePresence.java │ │ │ │ ├── ManifestPermRequestPasswordComplexity.java │ │ │ │ ├── ManifestPermRestartPackages.java │ │ │ │ ├── ManifestPermScheduleExactAlarm.java │ │ │ │ ├── ManifestPermSendRespondViaMessage.java │ │ │ │ ├── ManifestPermSendSms.java │ │ │ │ ├── ManifestPermSetAlarm.java │ │ │ │ ├── ManifestPermSetAlwaysFinish.java │ │ │ │ ├── ManifestPermSetAnimationScale.java │ │ │ │ ├── ManifestPermSetDebugApp.java │ │ │ │ ├── ManifestPermSetPreferredApplications.java │ │ │ │ ├── ManifestPermSetProcessLimit.java │ │ │ │ ├── ManifestPermSetTime.java │ │ │ │ ├── ManifestPermSetTimeZone.java │ │ │ │ ├── ManifestPermSetWallpaper.java │ │ │ │ ├── ManifestPermSetWallpaperHints.java │ │ │ │ ├── ManifestPermSignalPersistentProcesses.java │ │ │ │ ├── ManifestPermSmsFinancialTransactions.java │ │ │ │ ├── ManifestPermStartForegroundServicesFromBackground.java │ │ │ │ ├── ManifestPermStartViewPermissionUsage.java │ │ │ │ ├── ManifestPermStatusBar.java │ │ │ │ ├── ManifestPermSystemAlertWindow.java │ │ │ │ ├── ManifestPermTransmitIr.java │ │ │ │ ├── ManifestPermUninstallShortcut.java │ │ │ │ ├── ManifestPermUpdateDeviceStats.java │ │ │ │ ├── ManifestPermUpdatePackagesWithoutUserAction.java │ │ │ │ ├── ManifestPermUseBiometric.java │ │ │ │ ├── ManifestPermUseFingerprint.java │ │ │ │ ├── ManifestPermUseFullScreenIntent.java │ │ │ │ ├── ManifestPermUseIccAuthWithDeviceIdentifier.java │ │ │ │ ├── ManifestPermUseSip.java │ │ │ │ ├── ManifestPermUwbRanging.java │ │ │ │ ├── ManifestPermVibrate.java │ │ │ │ ├── ManifestPermWakeLock.java │ │ │ │ ├── ManifestPermWriteApnSettings.java │ │ │ │ ├── ManifestPermWriteCalendar.java │ │ │ │ ├── ManifestPermWriteCallLog.java │ │ │ │ ├── ManifestPermWriteContacts.java │ │ │ │ ├── ManifestPermWriteExternalStorage.java │ │ │ │ ├── ManifestPermWriteGservices.java │ │ │ │ ├── ManifestPermWriteSecureSettings.java │ │ │ │ ├── ManifestPermWriteSettings.java │ │ │ │ ├── ManifestPermWriteSyncSettings.java │ │ │ │ ├── ManifestPermWriteVoicemail.java │ │ │ │ └── ManifestPermissionCount.java │ │ │ ├── useshardware │ │ │ │ ├── ManifestUsesHWAudioLowLatency.java │ │ │ │ ├── ManifestUsesHWAudioMicrophone.java │ │ │ │ ├── ManifestUsesHWAudioOutput.java │ │ │ │ ├── ManifestUsesHWAudioPro.java │ │ │ │ ├── ManifestUsesHWBluetooth.java │ │ │ │ ├── ManifestUsesHWBluetoothLe.java │ │ │ │ ├── ManifestUsesHWCamera.java │ │ │ │ ├── ManifestUsesHWCameraAny.java │ │ │ │ ├── ManifestUsesHWCameraAutofocus.java │ │ │ │ ├── ManifestUsesHWCameraCapManualPostProcessing.java │ │ │ │ ├── ManifestUsesHWCameraCapManualSensor.java │ │ │ │ ├── ManifestUsesHWCameraCapRaw.java │ │ │ │ ├── ManifestUsesHWCameraExternal.java │ │ │ │ ├── ManifestUsesHWCameraFlash.java │ │ │ │ ├── ManifestUsesHWCameraFront.java │ │ │ │ ├── ManifestUsesHWCameraLevelFull.java │ │ │ │ ├── ManifestUsesHWConsumerIr.java │ │ │ │ ├── ManifestUsesHWCount.java │ │ │ │ ├── ManifestUsesHWFaketouch.java │ │ │ │ ├── ManifestUsesHWFaketouchMultitouchDistinct.java │ │ │ │ ├── ManifestUsesHWFaketouchMultitouchJazzhand.java │ │ │ │ ├── ManifestUsesHWFingerprint.java │ │ │ │ ├── ManifestUsesHWGamepad.java │ │ │ │ ├── ManifestUsesHWLocation.java │ │ │ │ ├── ManifestUsesHWLocationGps.java │ │ │ │ ├── ManifestUsesHWLocationNetwork.java │ │ │ │ ├── ManifestUsesHWNfc.java │ │ │ │ ├── ManifestUsesHWNfcHce.java │ │ │ │ ├── ManifestUsesHWOpenGLEsAep.java │ │ │ │ ├── ManifestUsesHWScreenLandscape.java │ │ │ │ ├── ManifestUsesHWScreenPortrait.java │ │ │ │ ├── ManifestUsesHWSensorAccelerometer.java │ │ │ │ ├── ManifestUsesHWSensorAmbientTemperature.java │ │ │ │ ├── ManifestUsesHWSensorBarometer.java │ │ │ │ ├── ManifestUsesHWSensorCompass.java │ │ │ │ ├── ManifestUsesHWSensorGyroscope.java │ │ │ │ ├── ManifestUsesHWSensorHeartrate.java │ │ │ │ ├── ManifestUsesHWSensorHeartrateEcg.java │ │ │ │ ├── ManifestUsesHWSensorHifiSensors.java │ │ │ │ ├── ManifestUsesHWSensorLight.java │ │ │ │ ├── ManifestUsesHWSensorProximity.java │ │ │ │ ├── ManifestUsesHWSensorRelativeHumidity.java │ │ │ │ ├── ManifestUsesHWSensorStepCounter.java │ │ │ │ ├── ManifestUsesHWSensorStepDetector.java │ │ │ │ ├── ManifestUsesHWTelephony.java │ │ │ │ ├── ManifestUsesHWTelephonyCdma.java │ │ │ │ ├── ManifestUsesHWTelephonyGsm.java │ │ │ │ ├── ManifestUsesHWTouchScreen.java │ │ │ │ ├── ManifestUsesHWTouchScreenMultitouch.java │ │ │ │ ├── ManifestUsesHWTouchScreenMultitouchDistinct.java │ │ │ │ ├── ManifestUsesHWTouchScreenMultitouchJazzHand.java │ │ │ │ ├── ManifestUsesHWTypeAutomotive.java │ │ │ │ ├── ManifestUsesHWTypeTelevision.java │ │ │ │ ├── ManifestUsesHWTypeWatch.java │ │ │ │ ├── ManifestUsesHWUsbAccessory.java │ │ │ │ ├── ManifestUsesHWUsbHost.java │ │ │ │ ├── ManifestUsesHWVulkanCompute.java │ │ │ │ ├── ManifestUsesHWVulkanLevel.java │ │ │ │ ├── ManifestUsesHWVulkanVersion.java │ │ │ │ ├── ManifestUsesHWWifi.java │ │ │ │ └── ManifestUsesHWWifiDirect.java │ │ │ └── usessoftware │ │ │ │ ├── ManifestUsesSWAppWidgets.java │ │ │ │ ├── ManifestUsesSWBackup.java │ │ │ │ ├── ManifestUsesSWCount.java │ │ │ │ ├── ManifestUsesSWDeviceAdmin.java │ │ │ │ ├── ManifestUsesSWHomeScreen.java │ │ │ │ ├── ManifestUsesSWInputMethods.java │ │ │ │ ├── ManifestUsesSWLeanback.java │ │ │ │ ├── ManifestUsesSWLiveTv.java │ │ │ │ ├── ManifestUsesSWLiveWallpaper.java │ │ │ │ ├── ManifestUsesSWManagedUsers.java │ │ │ │ ├── ManifestUsesSWMidi.java │ │ │ │ ├── ManifestUsesSWPrint.java │ │ │ │ ├── ManifestUsesSWSecurelyRemovesUsers.java │ │ │ │ ├── ManifestUsesSWSip.java │ │ │ │ ├── ManifestUsesSWSipVoip.java │ │ │ │ ├── ManifestUsesSWVerifiedBoot.java │ │ │ │ └── ManifestUsesSWWebview.java │ │ ├── methodbased │ │ │ ├── IsMethodAbstract.java │ │ │ ├── IsMethodClassAbstract.java │ │ │ ├── IsMethodClassAnonymous.java │ │ │ ├── IsMethodClassFinal.java │ │ │ ├── IsMethodClassInnerClass.java │ │ │ ├── IsMethodClassStatic.java │ │ │ ├── IsMethodConstructor.java │ │ │ ├── IsMethodFinal.java │ │ │ ├── IsMethodImplicit.java │ │ │ ├── IsMethodNative.java │ │ │ ├── IsMethodRealSetter.java │ │ │ ├── IsMethodStatic.java │ │ │ ├── IsMethodSynchronized.java │ │ │ ├── IsMethodThreadRun.java │ │ │ ├── MethodAccessModifier.java │ │ │ ├── MethodAssignStmtCount.java │ │ │ ├── MethodBranchCount.java │ │ │ ├── MethodCallClassContains.java │ │ │ ├── MethodCallContains.java │ │ │ ├── MethodCallFlowsToReturn.java │ │ │ ├── MethodCallOnParameterContains.java │ │ │ ├── MethodCallsMethod.java │ │ │ ├── MethodClassAccessModifier.java │ │ │ ├── MethodClassNameContains.java │ │ │ ├── MethodClassNameEndsWith.java │ │ │ ├── MethodClassNameEquals.java │ │ │ ├── MethodClassPackageNameEquals.java │ │ │ ├── MethodContainsObject.java │ │ │ ├── MethodHasParameters.java │ │ │ ├── MethodHasReturnType.java │ │ │ ├── MethodModifier.java │ │ │ ├── MethodNameContains.java │ │ │ ├── MethodNameEquals.java │ │ │ ├── MethodNameNotContains.java │ │ │ ├── MethodNameStartsWith.java │ │ │ ├── MethodParamContainsTypeOrName.java │ │ │ ├── MethodParamFlowsToMethod.java │ │ │ ├── MethodParamFlowsToReturn.java │ │ │ ├── MethodParamIsInterface.java │ │ │ ├── MethodParamTypeMatchesReturnType.java │ │ │ ├── MethodReturnTypeContainsName.java │ │ │ ├── MethodReturnTypeEquals.java │ │ │ ├── MethodReturnsConstant.java │ │ │ ├── MethodReturnsVoid.java │ │ │ ├── MethodReturnsVoidStartsWithOn.java │ │ │ └── MethodStmtCount.java │ │ └── wholeprogrambased │ │ │ ├── WholeProgramAPICallCount.java │ │ │ ├── WholeProgramAllAppMethodCount.java │ │ │ ├── WholeProgramAppMethodCount.java │ │ │ ├── WholeProgramAssignStmtCount.java │ │ │ ├── WholeProgramContainsAPICall.java │ │ │ ├── WholeProgramJavaLibMethodCount.java │ │ │ ├── WholeProgramMethodCount.java │ │ │ ├── WholeProgramStaticMethodCount.java │ │ │ └── WholeProgramStmtCount.java │ └── rm │ │ ├── AbstractFeatureSet.java │ │ ├── ClassFeatureSet.java │ │ ├── ManifestFeatureSet.java │ │ ├── MethodFeatureSet.java │ │ └── WholeProgramFeatureSet.java ├── eval │ ├── EvaluationApk.java │ └── EvaluationJar.java ├── manager │ ├── ClassFX.java │ ├── ManifestFX.java │ ├── MethodFX.java │ ├── MultiInstanceFX.java │ ├── SingleInstanceFX.java │ └── WholeProgramFX.java └── resource │ ├── FileConnector.java │ ├── ManifestConnector.java │ └── SootConnector.java └── resources └── META-INF └── MANIFEST.MF /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | SootFX.iml 3 | target/ 4 | /SootFXPy/venv/ 5 | assets 6 | eval 7 | input 8 | output 9 | -------------------------------------------------------------------------------- /SootFXPy/converter.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | 3 | 4 | def to_dataframe(feature_set): 5 | my_set = [] 6 | for feature in feature_set: 7 | instance = {"name": feature.getSignature()} 8 | for f in feature.getFeatures(): 9 | instance[f.getName()] = f.getValue() 10 | my_set.append(instance) 11 | df = pd.DataFrame(my_set) 12 | return df 13 | -------------------------------------------------------------------------------- /SootFXPy/requirements.txt: -------------------------------------------------------------------------------- 1 | ipython==7.27.0 2 | pandas==1.3.2 3 | py4j==0.10.9.2 4 | -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | #methodFeatureInclusion: 2 | # - MethodAssignStmtCount 3 | wholeProgFeatureInclusion: 4 | - WholeProgramAPICallCount 5 | featureResources: 6 | - {featureName: "WholeProgramAPICallCount", resourcePath: "./input/methods.txt"} 7 | #methodFeatureExclusion: 8 | # - MethodBranchCountK -------------------------------------------------------------------------------- /dependencies/install_dependencies.sh: -------------------------------------------------------------------------------- 1 | mvn install:install-file -Dfile=./soot-infoflow-android-2.5.1.jar -DgroupId=de.tud.sse -DartifactId=soot-infoflow-android -Dversion=2.5.1 -Dpackaging=jar -DgeneratePom=true -------------------------------------------------------------------------------- /dependencies/soot-infoflow-android-2.5.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/secure-software-engineering/SootFX/c3bbdc20e3fb53fbc3d0944e895617d328df276d/dependencies/soot-infoflow-android-2.5.1.jar -------------------------------------------------------------------------------- /paper_preprint.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/secure-software-engineering/SootFX/c3bbdc20e3fb53fbc3d0944e895617d328df276d/paper_preprint.pdf -------------------------------------------------------------------------------- /src/main/java/api/FeatureDescription.java: -------------------------------------------------------------------------------- 1 | package api; 2 | 3 | public class FeatureDescription { 4 | 5 | private String name; 6 | private String desc; 7 | 8 | public FeatureDescription(String name, String desc) { 9 | this.name = name; 10 | this.desc = desc; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | public String getDesc() { 17 | return desc; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/api/FeatureGroup.java: -------------------------------------------------------------------------------- 1 | package api; 2 | 3 | import java.util.List; 4 | 5 | public class FeatureGroup { 6 | private String name; 7 | 8 | private List list; 9 | 10 | public FeatureGroup(String name, List list) { 11 | this.name = name; 12 | this.list = list; 13 | } 14 | 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public List getList() { 20 | return list; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/api/FeatureResource.java: -------------------------------------------------------------------------------- 1 | package api; 2 | 3 | public class FeatureResource { 4 | 5 | private String featureName; 6 | private String resourcePath; 7 | 8 | public String getFeatureName() { 9 | return featureName; 10 | } 11 | 12 | public void setFeatureName(String featureName) { 13 | this.featureName = featureName; 14 | } 15 | 16 | public String getResourcePath() { 17 | return resourcePath; 18 | } 19 | 20 | public void setResourcePath(String resourcePath) { 21 | this.resourcePath = resourcePath; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/api/SootFXEntryPoint.java: -------------------------------------------------------------------------------- 1 | package api; 2 | 3 | import py4j.GatewayServer; 4 | 5 | public class SootFXEntryPoint { 6 | 7 | private SootFX sootFX; 8 | 9 | public SootFXEntryPoint() { 10 | sootFX = new SootFX(); 11 | } 12 | 13 | public SootFX sootFX() { 14 | return sootFX; 15 | } 16 | 17 | public static void main(String[] args) { 18 | GatewayServer gatewayServer = new GatewayServer(new SootFXEntryPoint()); 19 | gatewayServer.start(); 20 | System.out.println("Gateway Server Started"); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/base/ClassFEU.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | import soot.SootClass; 4 | 5 | public interface ClassFEU extends FeatureExtractionUnit { 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/core/fx/base/Feature.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | 4 | public class Feature implements Comparable>{ 5 | 6 | private String name; 7 | private V value; 8 | 9 | public Feature(String name, V value){ 10 | this.name = name; 11 | this.value = value; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public V getValue() { 19 | return value; 20 | } 21 | 22 | @Override 23 | public int compareTo(Feature other) { 24 | return name.compareToIgnoreCase(other.getName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/core/fx/base/FeatureExtractionUnit.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | 4 | public interface FeatureExtractionUnit { 5 | 6 | default String getName(){ 7 | return this.getClass().getSimpleName(); 8 | } 9 | 10 | default String getName(String value){ 11 | return String.format("%s(\"%s\")", getName(), value); 12 | } 13 | 14 | Feature extract(T target); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/core/fx/base/ManifestFEU.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 4 | 5 | public interface ManifestFEU extends FeatureExtractionUnit { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/core/fx/base/MethodFEU.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | import soot.SootMethod; 4 | 5 | public interface MethodFEU extends FeatureExtractionUnit { 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/core/fx/base/WholeProgramFEU.java: -------------------------------------------------------------------------------- 1 | package core.fx.base; 2 | 3 | import soot.jimple.toolkits.callgraph.CallGraph; 4 | 5 | public interface WholeProgramFEU extends FeatureExtractionUnit { 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassAccessModifier.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class ClassAccessModifier implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | String modifier = "UNK"; 12 | if(target.isPublic()){ 13 | modifier = "public"; 14 | }else if(target.isProtected()){ 15 | modifier = "protected"; 16 | }else if(target.isPrivate()){ 17 | modifier = "private"; 18 | } 19 | return new Feature<>(getName(), modifier); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassContainsField.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class ClassContainsField implements ClassFEU { 8 | 9 | private String value; 10 | 11 | public ClassContainsField(String value) { 12 | this.value = value; 13 | } 14 | 15 | @Override 16 | public Feature extract(SootClass target) { 17 | target.getFields().forEach(field -> field.getName().contains(value)); 18 | return new Feature<>(getName(), target.getMethods().size()); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassContainsMethod.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class ClassContainsMethod implements ClassFEU { 8 | 9 | private String value; 10 | 11 | public ClassContainsMethod(String value) { 12 | this.value = value; 13 | } 14 | 15 | @Override 16 | public Feature extract(SootClass target) { 17 | target.getMethods().forEach(sootMethod -> sootMethod.getName().contains(value)); 18 | return new Feature<>(getName(), target.getMethods().size()); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassFieldCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class ClassFieldCount implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.getFields().size()); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassMethodCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class ClassMethodCount implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.getMethods().size()); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassNameContains.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootClass; 7 | 8 | public class ClassNameContains implements ClassFEU { 9 | 10 | String value; 11 | 12 | public ClassNameContains(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootClass target) { 18 | return new Feature<>(getName(value), StringUtils.containsIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassNameEndsWith.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootClass; 7 | 8 | public class ClassNameEndsWith implements ClassFEU { 9 | 10 | String value; 11 | 12 | public ClassNameEndsWith(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootClass target) { 18 | return new Feature<>(getName(value), StringUtils.endsWithIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/ClassPackageNameEquals.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootClass; 7 | 8 | public class ClassPackageNameEquals implements ClassFEU { 9 | 10 | String value; 11 | 12 | public ClassPackageNameEquals(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootClass target) { 18 | return new Feature<>(getName(value), StringUtils.equalsIgnoreCase(target.getPackageName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsAbstractClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsAbstractClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.isAbstract()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsEnumClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsEnumClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.isEnum()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsFinalClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsFinalClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.isFinal()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsInnerClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsInnerClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.hasOuterClass()); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsInterfaceClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsInterfaceClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.isInterface()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/classbased/IsStaticClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.classbased; 2 | 3 | import core.fx.base.ClassFEU; 4 | import core.fx.base.Feature; 5 | import soot.SootClass; 6 | 7 | public class IsStaticClass implements ClassFEU { 8 | 9 | @Override 10 | public Feature extract(SootClass target) { 11 | return new Feature<>(getName(), target.isStatic()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/ManifestActivityCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestActivityCount implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | Long count = new Long(target.getActivities().size()); 12 | return new Feature<>(this.getClass().getSimpleName(), count); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/ManifestLaunchableActivityCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestLaunchableActivityCount implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | Long count = new Long(target.getLaunchableActivities().size()); 12 | return new Feature<>(this.getClass().getSimpleName(), count); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/ManifestServiceCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestServiceCount implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | Long count = new Long(target.getServices().size()); 12 | return new Feature<>(this.getClass().getSimpleName(), count); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAcceptHandover.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAcceptHandover implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCEPT_HANDOVER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessBackgroundLocation.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessBackgroundLocation implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_BACKGROUND_LOCATION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessBlobsAcrossUsers.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessBlobsAcrossUsers implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_BLOBS_ACROSS_USERS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessCheckinProperties.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessCheckinProperties implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_CHECKIN_PROPERTIES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessCoarseLocation.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessCoarseLocation implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_COARSE_LOCATION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessFineLocation.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessFineLocation implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_FINE_LOCATION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessMediaLocation.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessMediaLocation implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_MEDIA_LOCATION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessNetworkState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessNetworkState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_NETWORK_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccessWifiState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccessWifiState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_WIFI_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAccountManager.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAccountManager implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCOUNT_MANAGER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermActivityRecognition.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermActivityRecognition implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACTIVITY_RECOGNITION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAddVoicemail.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAddVoicemail implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.voicemail.permission.ADD_VOICEMAIL")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermAnswerPhoneCalls.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermAnswerPhoneCalls implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ANSWER_PHONE_CALLS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBatteryStats.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBatteryStats implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BATTERY_STATS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindAccessibilityService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindAccessibilityService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_ACCESSIBILITY_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindAppwidget.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindAppwidget implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_APPWIDGET")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindAutofillService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindAutofillService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_AUTOFILL_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindCallRedirectionService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindCallRedirectionService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CALL_REDIRECTION_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindCarrierMessagingClientService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindCarrierMessagingClientService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindCarrierMessagingService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindCarrierMessagingService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CARRIER_MESSAGING_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindCarrierService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindCarrierService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CARRIER_SERVICES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindChooserTargetService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindChooserTargetService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CHOOSER_TARGET_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindCompanionDeviceService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindCompanionDeviceService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_COMPANION_DEVICE_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindConditionProviderService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindConditionProviderService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CONDITION_PROVIDER_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindControls.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindControls implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_CONTROLS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindDeviceAdmin.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindDeviceAdmin implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_DEVICE_ADMIN")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindDreamService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindDreamService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_DREAM_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindIncallService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindIncallService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_INCALL_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindInputMethod.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindInputMethod implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_INPUT_METHOD")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindMidiDeviceService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindMidiDeviceService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_MIDI_DEVICE_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindNfcService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindNfcService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_NFC_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindNotificationListenerService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindNotificationListenerService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindPrintService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindPrintService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_PRINT_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindQuickAccessWalletService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindQuickAccessWalletService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindQuickSettingsTile.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindQuickSettingsTile implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_QUICK_SETTINGS_TILE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindRemoteviews.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindRemoteviews implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_REMOTEVIEWS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindScreeningService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindScreeningService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_SCREENING_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindTelecomConnectionService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindTelecomConnectionService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_TELECOM_CONNECTION_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindTextService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindTextService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_TEXT_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindTvInput.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindTvInput implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_TV_INPUT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindVisualVoicemailService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindVisualVoicemailService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_VISUAL_VOICEMAIL_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindVoiceInteraction.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindVoiceInteraction implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_VOICE_INTERACTION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindVpnService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindVpnService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_VPN_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindVrListenerService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindVrListenerService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_VR_LISTENER_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBindWallpaper.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBindWallpaper implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BIND_WALLPAPER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetooth.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetooth implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetoothAdmin.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetoothAdmin implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH_ADMIN")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetoothAdvertise.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetoothAdvertise implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH_ADVERTISE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetoothConnect.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetoothConnect implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH_CONNECT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetoothPrivileged.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetoothPrivileged implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH_PRIVILEGED")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBluetoothScan.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBluetoothScan implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BLUETOOTH_SCAN")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBodySensors.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBodySensors implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BODY_SENSORS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBroadcastPackageRemoved.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBroadcastPackageRemoved implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BROADCAST_PACKAGE_REMOVED")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBroadcastSms.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBroadcastSms implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BROADCAST_SMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBroadcastSticky.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBroadcastSticky implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BROADCAST_STICKY")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermBroadcastWapPush.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermBroadcastWapPush implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.BROADCAST_WAP_PUSH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermCallCompanionApp.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermCallCompanionApp implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CALL_COMPANION_APP")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermCallPhone.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermCallPhone implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CALL_PHONE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermCallPrivileged.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermCallPrivileged implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CALL_PRIVILEGED")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermCamera.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermCamera implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CAMERA")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermCaptureAudioOutput.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermCaptureAudioOutput implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CAPTURE_AUDIO_OUTPUT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermChangeComponentEnabledState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermChangeComponentEnabledState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CHANGE_COMPONENT_ENABLED_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermChangeConfiguration.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermChangeConfiguration implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CHANGE_CONFIGURATION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermChangeNetworkState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermChangeNetworkState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CHANGE_NETWORK_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermChangeWifiMulticastState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermChangeWifiMulticastState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CHANGE_WIFI_MULTICAST_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermChangeWifiState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermChangeWifiState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CHANGE_WIFI_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermClearAppCache.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermClearAppCache implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CLEAR_APP_CACHE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermControlLocationUpdates.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermControlLocationUpdates implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.CONTROL_LOCATION_UPDATES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermDeleteCacheFiles.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermDeleteCacheFiles implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.DELETE_CACHE_FILES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermDeletePackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermDeletePackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.DELETE_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermDiagnostic.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermDiagnostic implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.DIAGNOSTIC")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermDisableKeyguard.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermDisableKeyguard implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.DISABLE_KEYGUARD")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermDump.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermDump implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.DUMP")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermExpandStatusBar.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermExpandStatusBar implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.EXPAND_STATUS_BAR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermFactoryTest.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermFactoryTest implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.FACTORY_TEST")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermForegroundService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermForegroundService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.FOREGROUND_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermGetAccounts.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermGetAccounts implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.GET_ACCOUNTS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermGetAccountsPrivileged.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermGetAccountsPrivileged implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.GET_ACCOUNTS_PRIVILEGED")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermGetPackageSize.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermGetPackageSize implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.GET_PACKAGE_SIZE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermGetTasks.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermGetTasks implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.GET_TASKS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermGlobalSearch.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermGlobalSearch implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.GLOBAL_SEARCH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermHideOverlayWindows.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermHideOverlayWindows implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.HIDE_OVERLAY_WINDOWS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermHighSamplingRateSensors.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermHighSamplingRateSensors implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.HIGH_SAMPLING_RATE_SENSORS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInstallLocationProvider.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInstallLocationProvider implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.INSTALL_LOCATION_PROVIDER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInstallPackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInstallPackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.INSTALL_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInstallShortcut.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInstallShortcut implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.launcher.permission.INSTALL_SHORTCUT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInstantAppForegroundService.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInstantAppForegroundService implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.INSTANT_APP_FOREGROUND_SERVICE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInteractionAcrossProfiles.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInteractionAcrossProfiles implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.INTERACT_ACROSS_PROFILES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermInternet.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermInternet implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.INTERNET")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermKillBackgroundProcesses.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermKillBackgroundProcesses implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.KILL_BACKGROUND_PROCESSES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermLoaderUsageStats.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermLoaderUsageStats implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.LOADER_USAGE_STATS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermLocationExtraCommands.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermLocationExtraCommands implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_LOCATION_EXTRA_COMMANDS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermLocationHardware.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermLocationHardware implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.LOCATION_HARDWARE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermManageDocuments.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermManageDocuments implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MANAGE_DOCUMENTS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermManageExternalStorage.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermManageExternalStorage implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MANAGE_EXTERNAL_STORAGE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermManageMedia.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermManageMedia implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MANAGE_MEDIA")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermManageOngoingCalls.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermManageOngoingCalls implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MANAGE_ONGOING_CALLS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermManageOwnCalls.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermManageOwnCalls implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MANAGE_OWN_CALLS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermMasterClear.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermMasterClear implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MASTER_CLEAR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermMediaContentControl.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermMediaContentControl implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MEDIA_CONTENT_CONTROL")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermModifyAudioSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermModifyAudioSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MODIFY_AUDIO_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermModifyPhoneState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermModifyPhoneState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MODIFY_PHONE_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermMountFormatFilesystems.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermMountFormatFilesystems implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MOUNT_FORMAT_FILESYSTEMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermMountUnmountFilesystems.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermMountUnmountFilesystems implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.MOUNT_UNMOUNT_FILESYSTEMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermNFC.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermNFC implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.NFC")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermNFCPreferredPaymentInfo.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermNFCPreferredPaymentInfo implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.NFC_PREFERRED_PAYMENT_INFO")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermNFCTransactionEvent.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermNFCTransactionEvent implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.NFC_TRANSACTION_EVENT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermNotificationPolicy.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermNotificationPolicy implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.ACCESS_NOTIFICATION_POLICY")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermPackageUsageStats.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermPackageUsageStats implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.PACKAGE_USAGE_STATS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermPersistentActivity.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermPersistentActivity implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.PERSISTENT_ACTIVITY")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermProcessOutgoingCalls.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermProcessOutgoingCalls implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.PROCESS_OUTGOING_CALLS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermQueryAllPackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermQueryAllPackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.QUERY_ALL_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadCalendar.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadCalendar implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_CALENDAR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadCallLog.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadCallLog implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_CALL_LOG")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadContacts.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadContacts implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_CONTACTS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadExternalStorage.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadExternalStorage implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_EXTERNAL_STORAGE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadInputState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadInputState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_INPUT_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadLogs.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadLogs implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_LOGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadPhoneNumbers.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadPhoneNumbers implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_PHONE_NUMBERS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadPhoneState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadPhoneState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_PHONE_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadPrecisePhoneState.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadPrecisePhoneState implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_PRECISE_PHONE_STATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadSms.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadSms implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_SMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadSyncSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadSyncSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_SYNC_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadSyncStats.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadSyncStats implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.READ_SYNC_STATS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReadVoicemail.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReadVoicemail implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.voicemail.permission.READ_VOICEMAIL")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReboot.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReboot implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REBOOT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReceiveBootCompleted.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReceiveBootCompleted implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RECEIVE_BOOT_COMPLETED")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReceiveMms.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReceiveMms implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RECEIVE_MMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReceiveSms.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReceiveSms implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RECEIVE_SMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReceiveWapPush.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReceiveWapPush implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RECEIVE_WAP_PUSH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRecordAudio.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRecordAudio implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RECORD_AUDIO")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermReorderTasks.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermReorderTasks implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REORDER_TASKS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestCompanionProfileWatch.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestCompanionProfileWatch implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_COMPANION_PROFILE_WATCH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestCompanionRunInBackground.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestCompanionRunInBackground implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestCompanionStartForegroundServicesFromBackground.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestCompanionStartForegroundServicesFromBackground implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestCompanionUseDataInBackground.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestCompanionUseDataInBackground implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestDeletePackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestDeletePackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_DELETE_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestIgnoreBatteryOptimizations.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestIgnoreBatteryOptimizations implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestInstallPackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestInstallPackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_INSTALL_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestObserveCompanionDevicePresence.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestObserveCompanionDevicePresence implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRequestPasswordComplexity.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRequestPasswordComplexity implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.REQUEST_PASSWORD_COMPLEXITY")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermRestartPackages.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermRestartPackages implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.RESTART_PACKAGES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermScheduleExactAlarm.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermScheduleExactAlarm implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SCHEDULE_EXACT_ALARM")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSendRespondViaMessage.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSendRespondViaMessage implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SEND_RESPOND_VIA_MESSAGE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSendSms.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSendSms implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SEND_SMS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetAlarm.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetAlarm implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.alarm.permission.SET_ALARM")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetAlwaysFinish.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetAlwaysFinish implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_ALWAYS_FINISH")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetAnimationScale.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetAnimationScale implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_ANIMATION_SCALE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetDebugApp.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetDebugApp implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_DEBUG_APP")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetPreferredApplications.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetPreferredApplications implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_PREFERRED_APPLICATIONS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetProcessLimit.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetProcessLimit implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_PROCESS_LIMIT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetTime.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetTime implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_PROCESS_LIMIT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetTimeZone.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetTimeZone implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_TIME_ZONE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetWallpaper.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetWallpaper implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_WALLPAPER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSetWallpaperHints.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSetWallpaperHints implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SET_WALLPAPER_HINTS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSignalPersistentProcesses.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSignalPersistentProcesses implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SIGNAL_PERSISTENT_PROCESSES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSmsFinancialTransactions.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSmsFinancialTransactions implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SMS_FINANCIAL_TRANSACTIONS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermStartForegroundServicesFromBackground.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermStartForegroundServicesFromBackground implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermStartViewPermissionUsage.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermStartViewPermissionUsage implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.START_VIEW_PERMISSION_USAGE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermStatusBar.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermStatusBar implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.STATUS_BAR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermSystemAlertWindow.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermSystemAlertWindow implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.SYSTEM_ALERT_WINDOW")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermTransmitIr.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermTransmitIr implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.TRANSMIT_IR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUninstallShortcut.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUninstallShortcut implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.launcher.permission.UNINSTALL_SHORTCUT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUpdateDeviceStats.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUpdateDeviceStats implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.UPDATE_DEVICE_STATS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUpdatePackagesWithoutUserAction.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUpdatePackagesWithoutUserAction implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUseBiometric.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUseBiometric implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.USE_BIOMETRIC")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUseFingerprint.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUseFingerprint implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.USE_FINGERPRINT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUseFullScreenIntent.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUseFullScreenIntent implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.USE_FULL_SCREEN_INTENT")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUseIccAuthWithDeviceIdentifier.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUseIccAuthWithDeviceIdentifier implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUseSip.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUseSip implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.USE_SIP")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermUwbRanging.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermUwbRanging implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.UWB_RANGING")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermVibrate.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermVibrate implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.VIBRATE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWakeLock.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWakeLock implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WAKE_LOCK")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteApnSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteApnSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_APN_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteCalendar.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteCalendar implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_CALENDAR")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteCallLog.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteCallLog implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_CALL_LOG")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteContacts.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteContacts implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_CONTACTS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteExternalStorage.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteExternalStorage implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_EXTERNAL_STORAGE")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteGservices.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteGservices implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_GSERVICES")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteSecureSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteSecureSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_SECURE_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteSyncSettings.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteSyncSettings implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("android.permission.WRITE_SYNC_SETTINGS")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermWriteVoicemail.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermWriteVoicemail implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | return new Feature<>(getName(), target.getPermissions().contains("com.android.voicemail.permission.WRITE_VOICEMAIL")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/permission/ManifestPermissionCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.permission; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.ManifestFEU; 5 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 6 | 7 | public class ManifestPermissionCount implements ManifestFEU { 8 | 9 | @Override 10 | public Feature extract(ProcessManifest target) { 11 | Long count = new Long(target.getPermissions().size()); 12 | return new Feature<>(this.getClass().getSimpleName(), count); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWAudioLowLatency.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWAudioLowLatency implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.audio.low_latency")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWAudioMicrophone.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWAudioMicrophone implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.audio.microphone")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWAudioOutput.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWAudioOutput implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.audio.output")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWAudioPro.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWAudioPro implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.audio.pro")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWBluetooth.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWBluetooth implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.bluetooth")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWBluetoothLe.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWBluetoothLe implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.bluetooth_le")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCamera.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCamera implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraAny.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraAny implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.any")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraAutofocus.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraAutofocus implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.autofocus")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraCapRaw.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraCapRaw implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.capability.raw")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraExternal.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraExternal implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.external")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraFlash.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraFlash implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.flash")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraFront.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraFront implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.front")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCameraLevelFull.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWCameraLevelFull implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.camera.level.full")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWConsumerIr.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWConsumerIr implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.consumerir")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | public class ManifestUsesHWCount implements ManifestFEU { 9 | 10 | @Override 11 | public Feature extract(ProcessManifest target) { 12 | Long count = FxUtil.getManifestUsesFeature(target).stream().filter(s->s.startsWith("android.hardware")).count(); 13 | return new Feature<>(getName(), count); 14 | } 15 | 16 | 17 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWFaketouch.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWFaketouch implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.faketouch")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWFingerprint.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWFingerprint implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.fingerprint")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWGamepad.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWGamepad implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.gamepad")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWLocation.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWLocation implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.location")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWLocationGps.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWLocationGps implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.location.gps")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWLocationNetwork.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWLocationNetwork implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.location.network")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWNfc.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWNfc implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.nfc")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWNfcHce.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWNfcHce implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.nfc.hce")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWOpenGLEsAep.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWOpenGLEsAep implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.opengles.aep")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWScreenLandscape.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWScreenLandscape implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.screen.landscape")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWScreenPortrait.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWScreenPortrait implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.screen.portrait")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorAccelerometer.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorAccelerometer implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.accelerometer")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorBarometer.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorBarometer implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.barometer")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorCompass.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorCompass implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.compass")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorGyroscope.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorGyroscope implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.gyroscope")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorHeartrate.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorHeartrate implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.heartrate")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorHeartrateEcg.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorHeartrateEcg implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.heartrate.ecg")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorHifiSensors.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorHifiSensors implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.hifi_sensors")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorLight.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorLight implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.light")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorProximity.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorProximity implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.proximity")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorStepCounter.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorStepCounter implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.stepcounter")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWSensorStepDetector.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWSensorStepDetector implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.sensor.stepdetector")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTelephony.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTelephony implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.telephony")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTelephonyCdma.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTelephonyCdma implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.telephony.cdma")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTelephonyGsm.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTelephonyGsm implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.telephony.gsm")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTouchScreen.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTouchScreen implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.touchscreen")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTypeAutomotive.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTypeAutomotive implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.type.automotive")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTypeTelevision.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTypeTelevision implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.type.television")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWTypeWatch.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWTypeWatch implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.type.watch")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWUsbAccessory.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWUsbAccessory implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.usb.accessory")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWUsbHost.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWUsbHost implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.usb.host")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWVulkanCompute.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWVulkanCompute implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.vulkan.compute")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWVulkanLevel.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWVulkanLevel implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.vulkan.level")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWVulkanVersion.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWVulkanVersion implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.vulkan.version")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWWifi.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWWifi implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.wifi")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/useshardware/ManifestUsesHWWifiDirect.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.useshardware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesHWWifiDirect implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.hardware.wifi")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWAppWidgets.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWAppWidgets implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.app_widgets")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWBackup.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWBackup implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.backup")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | public class ManifestUsesSWCount implements ManifestFEU { 9 | 10 | @Override 11 | public Feature extract(ProcessManifest target) { 12 | Long count = FxUtil.getManifestUsesFeature(target).stream().filter(s->s.startsWith("android.software")).count(); 13 | return new Feature<>(getName(), count); 14 | } 15 | 16 | 17 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWDeviceAdmin.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWDeviceAdmin implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.device_admin")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWHomeScreen.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWHomeScreen implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.home_screen")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWInputMethods.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWInputMethods implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.input_methods")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWLeanback.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWLeanback implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.leanback")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWLiveTv.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWLiveTv implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.live_tv")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWLiveWallpaper.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWLiveWallpaper implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.live_wallpaper")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWManagedUsers.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWManagedUsers implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.managed_users")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWMidi.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWMidi implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.midi")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWPrint.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWPrint implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.print")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWSecurelyRemovesUsers.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWSecurelyRemovesUsers implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.securely_removes_users")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWSip.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWSip implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.sip")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWSipVoip.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWSipVoip implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.sip.voip")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWVerifiedBoot.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWVerifiedBoot implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.verified_boot")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/manifestbased/usessoftware/ManifestUsesSWWebview.java: -------------------------------------------------------------------------------- 1 | package core.fx.manifestbased.usessoftware; 2 | 3 | import core.fx.FxUtil; 4 | import core.fx.base.Feature; 5 | import core.fx.base.ManifestFEU; 6 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 7 | 8 | import java.util.List; 9 | 10 | 11 | public class ManifestUsesSWWebview implements ManifestFEU { 12 | 13 | @Override 14 | public Feature extract(ProcessManifest target) { 15 | List uses = FxUtil.getManifestUsesFeature(target); 16 | return new Feature<>(getName(), uses.contains("android.software.webview")); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodAbstract.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodAbstract implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.isAbstract()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodClassAbstract.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodClassAbstract implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.getDeclaringClass().isAbstract()); 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodClassFinal.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodClassFinal implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.getDeclaringClass().isStatic()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodClassInnerClass.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodClassInnerClass implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.getDeclaringClass().hasOuterClass()); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodClassStatic.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | public class IsMethodClassStatic { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodConstructor.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodConstructor implements MethodFEU { 8 | @Override 9 | public Feature extract(SootMethod target) { 10 | return new Feature<>(getName(), target.getName().equals("") 11 | || target.getName().equals("")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodFinal.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodFinal implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.isFinal()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodImplicit.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodImplicit implements MethodFEU { 8 | 9 | /** 10 | * Implicit methods (e.g. methods from bytecode for access of private fields) 11 | * @param target 12 | * @return 13 | */ 14 | @Override 15 | public Feature extract(SootMethod target) { 16 | return new Feature<>(getName(), target.getName().contains("$")); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodNative.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodNative implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.isNative()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodStatic.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodStatic implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.isStatic()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/IsMethodSynchronized.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class IsMethodSynchronized implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.isSynchronized()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodAccessModifier.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodAccessModifier implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | String modifier = "UNK"; 12 | if(target.isPublic()){ 13 | modifier = "public"; 14 | }else if(target.isProtected()){ 15 | modifier = "protected"; 16 | }else if(target.isPrivate()){ 17 | modifier = "private"; 18 | } 19 | return new Feature<>(getName(), modifier); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodBranchCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | import soot.Unit; 7 | 8 | public class MethodBranchCount implements MethodFEU { 9 | 10 | @Override 11 | public Feature extract(SootMethod method) { 12 | Long count = -1l; 13 | 14 | if(method.hasActiveBody()){ 15 | count = method.getActiveBody().getUnits().stream().filter(Unit::branches).count(); 16 | } 17 | return new Feature<>(getName(), count); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodClassNameContains.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodClassNameContains implements MethodFEU { 9 | 10 | String value; 11 | 12 | public MethodClassNameContains(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.containsIgnoreCase(target.getDeclaringClass().getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodClassNameEndsWith.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodClassNameEndsWith implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodClassNameEndsWith(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.endsWithIgnoreCase(target.getDeclaringClass().getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodClassNameEquals.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodClassNameEquals implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodClassNameEquals(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(), StringUtils.equalsIgnoreCase(target.getDeclaringClass().getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodClassPackageNameEquals.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodClassPackageNameEquals implements MethodFEU { 9 | 10 | String value; 11 | 12 | public MethodClassPackageNameEquals(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.equalsIgnoreCase(target.getDeclaringClass().getPackageName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodHasParameters.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodHasParameters implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), target.getParameterCount()>0); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodHasReturnType.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodHasReturnType implements MethodFEU { 8 | 9 | @Override 10 | public Feature extract(SootMethod target) { 11 | return new Feature<>(getName(), !target.getReturnType().equals("void")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodModifier.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | public class MethodModifier { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodNameContains.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodNameContains implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodNameContains(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.containsIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodNameEquals.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodNameEquals implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodNameEquals(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.equalsIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodNameNotContains.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodNameNotContains implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodNameNotContains(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), !StringUtils.containsIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodNameStartsWith.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodNameStartsWith implements MethodFEU { 9 | 10 | private String value; 11 | 12 | public MethodNameStartsWith(String value){ 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Feature extract(SootMethod target) { 18 | return new Feature<>(getName(value), StringUtils.startsWithIgnoreCase(target.getName(), value)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodReturnTypeContainsName.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import org.apache.commons.lang3.StringUtils; 6 | import soot.SootMethod; 7 | 8 | public class MethodReturnTypeContainsName implements MethodFEU { 9 | 10 | String value; 11 | 12 | public MethodReturnTypeContainsName(String value) { 13 | this.value = value; 14 | } 15 | 16 | 17 | @Override 18 | public Feature extract(SootMethod target) { 19 | return new Feature<>(getName(value), StringUtils.containsIgnoreCase(target.getReturnType().toString(), value)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodReturnsVoid.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodReturnsVoid implements MethodFEU { 8 | @Override 9 | public Feature extract(SootMethod target) { 10 | return new Feature<>(getName(), target.getReturnType().toString().equals("void")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodReturnsVoidStartsWithOn.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodReturnsVoidStartsWithOn implements MethodFEU { 8 | 9 | 10 | @Override 11 | public Feature extract(SootMethod target) { 12 | boolean holds = target.getName().startsWith("on") 13 | && (target.getReturnType().toString().equals("void") 14 | || target.getReturnType().toString().equals("boolean")); 15 | return new Feature<>(getName(), holds); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/core/fx/methodbased/MethodStmtCount.java: -------------------------------------------------------------------------------- 1 | package core.fx.methodbased; 2 | 3 | import core.fx.base.Feature; 4 | import core.fx.base.MethodFEU; 5 | import soot.SootMethod; 6 | 7 | public class MethodStmtCount implements MethodFEU { 8 | 9 | 10 | @Override 11 | public Feature extract(SootMethod method) { 12 | if(method.hasActiveBody()){ 13 | int stmtCount = method.getActiveBody().getUnits().size(); 14 | return new Feature<>(this.getClass().getSimpleName(), stmtCount); 15 | } 16 | return new Feature<>(this.getClass().getSimpleName(), 0); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/core/rm/ClassFeatureSet.java: -------------------------------------------------------------------------------- 1 | package core.rm; 2 | 3 | import soot.SootClass; 4 | import java.util.TreeSet; 5 | 6 | public class ClassFeatureSet extends AbstractFeatureSet { 7 | 8 | private SootClass sootClass; 9 | 10 | public ClassFeatureSet(SootClass sootClass){ 11 | this.sootClass = sootClass; 12 | this.features = new TreeSet<>(); 13 | } 14 | 15 | @Override 16 | public String getSignature() { 17 | return sootClass.getName(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/core/rm/ManifestFeatureSet.java: -------------------------------------------------------------------------------- 1 | package core.rm; 2 | 3 | 4 | public class ManifestFeatureSet extends AbstractFeatureSet { 5 | 6 | @Override 7 | public String getSignature() { 8 | return this.getClass().getSimpleName(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/core/rm/MethodFeatureSet.java: -------------------------------------------------------------------------------- 1 | package core.rm; 2 | 3 | import soot.SootMethod; 4 | import java.util.TreeSet; 5 | 6 | public class MethodFeatureSet extends AbstractFeatureSet { 7 | 8 | private SootMethod sootMethod; 9 | 10 | public MethodFeatureSet(SootMethod sootMethod){ 11 | this.sootMethod = sootMethod; 12 | this.features = new TreeSet<>(); 13 | } 14 | 15 | @Override 16 | public String getSignature() { 17 | return sootMethod.getSignature(); 18 | } 19 | 20 | public SootMethod getMethod(){ 21 | return sootMethod; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/core/rm/WholeProgramFeatureSet.java: -------------------------------------------------------------------------------- 1 | package core.rm; 2 | 3 | public class WholeProgramFeatureSet extends AbstractFeatureSet { 4 | 5 | @Override 6 | public String getSignature() { 7 | return this.getClass().getSimpleName(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/manager/MultiInstanceFX.java: -------------------------------------------------------------------------------- 1 | package manager; 2 | 3 | import core.fx.base.FeatureExtractionUnit; 4 | import core.rm.AbstractFeatureSet; 5 | 6 | import java.util.List; 7 | import java.util.Set; 8 | 9 | public interface MultiInstanceFX { 10 | 11 | Set getFeatures(Set featureExtractors); 12 | 13 | Set getAllFeatures(); 14 | 15 | Set getAllFeaturesExclude(Set exclusion); 16 | 17 | Set getFeatures(List featureExtractors); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/manager/SingleInstanceFX.java: -------------------------------------------------------------------------------- 1 | package manager; 2 | 3 | import api.FeatureResource; 4 | import core.fx.base.FeatureExtractionUnit; 5 | import core.rm.AbstractFeatureSet; 6 | 7 | import java.util.List; 8 | import java.util.Set; 9 | 10 | public interface SingleInstanceFX { 11 | 12 | S getFeatures(Set featureExtractors); 13 | 14 | S getAllFeatures(); 15 | 16 | S getAllFeaturesExclude(Set exclusion); 17 | 18 | S getFeatures(List featureExtractors); 19 | 20 | S getFeatures(List featureExtractors, List featureResources); 21 | 22 | } -------------------------------------------------------------------------------- /src/main/java/resource/FileConnector.java: -------------------------------------------------------------------------------- 1 | package resource; 2 | 3 | import java.io.IOException; 4 | import java.nio.file.Files; 5 | import java.nio.file.Paths; 6 | import java.util.List; 7 | import java.util.stream.Collectors; 8 | import java.util.stream.Stream; 9 | 10 | public class FileConnector { 11 | 12 | public static List getMethodSignatures(String path){ 13 | List result = null; 14 | try (Stream lines = Files.lines(Paths.get(path))) { 15 | result = lines.map(l->l.trim()).collect(Collectors.toList()); 16 | }catch (IOException e){ 17 | e.printStackTrace(); 18 | } 19 | return result; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/resource/ManifestConnector.java: -------------------------------------------------------------------------------- 1 | package resource; 2 | 3 | import org.xmlpull.v1.XmlPullParserException; 4 | import soot.jimple.infoflow.android.manifest.ProcessManifest; 5 | 6 | import java.io.IOException; 7 | 8 | public class ManifestConnector { 9 | 10 | public static ProcessManifest getManifest(String apkPath) { 11 | ProcessManifest manifest = null; 12 | try { 13 | manifest = new ProcessManifest(apkPath); 14 | } catch (IOException e) { 15 | e.printStackTrace(); 16 | } catch (XmlPullParserException e) { 17 | e.printStackTrace(); 18 | } 19 | return manifest; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: api.CLI 3 | 4 | --------------------------------------------------------------------------------