Configuration

The simplest way to initialize Malwarelytics for Android is in Application.onCreate() system callback. The absolute minimum required for integration is to provide apiUsername, apiPassword and apiSignaturePublicKey in AppProtectionConfig.Builder.

An example of minimum initialization code:

class MyApplication : Application() {

    override fun onCreate() {
        // Prepare minimum configuration
        val config = AppProtectionConfig.Builder(appContext)
            .apiUsername(API_USERNAME)
            .apiPassword(API_PASSWORD)
            .apiSignaturePublicKey(API_SIGNATURE_PUBLIC_KEY)
            .clientAppUserId(INTERNAL_CLIENT_USER_ID) // Use if the internal user ID is available at config time
            .clientAppDeviceId(INTERNAL_CLIENT_DEVICE_ID) // Use if the internal device ID is available at config time
            .antivirusConfig(
                AntivirusConfig.Builder()
                        .build()
            )
            .raspConfig(
                RaspConfig.Builder()
                        .signatureHash(SIGNATURE_HASH)
                        .build()
            )
            .build()

        // Initialize AppProtection class
        val appProtection = AppProtection.getInstance()
        appProtection.initializeAsync(config, object: AppProtection.InitializationObserver {
            // App Protection is fully ready to be used now
            override fun onInitialized() {
                // Setup internal IDs when you are able to obtain them
                appProtection.updateClientAppUserId(INTERNAL_CLIENT_USER_ID)
                appProtection.updateClientAppDeviceId(INTERNAL_CLIENT_DEVICE_ID)
            }
        })   
        // ...           
    }
}

You can find API_USERNAME, API_PASSWORD and API_SIGNATURE_PUBLIC_KEY values in the Malwarelytics console. Use some user identifiers you understand for INTERNAL_CLIENT_USER_ID and/or INTERNAL_CLIENT_DEVICE_ID. To obtain the SIGNATURE_HASH value, please follow the Repackaging Detection guide.

See RASP feature overview for a detailed documentation of available detections and security features.

Configuration-Reference

Reference list of all configuration options.

AppProtectionConfig Options

Global configuration options for AppProtection.

val config = AppProtectionConfig.Builder(appContext)

    // configuration for Antivirus
    .antivirusConfig(antivirusConfig)

    // configuration for RASP
    .raspConfig(raspConfig)

    // API username
    .apiUsername(username)

    // API password
    .apiPassword(password)

    // API signature public key
    .apiSignaturePublicKey(apiSignaturePublicKey)

    // change update server and its SSL pinning
    .updateServer(ServerConfiguration("https://...", "YT5Qad..."))

    // set clientAppUserId
    .clientAppUserId("SOME_CLIENT_USER_ID_VALUE")
        
    // set clientAppDeviceId
    .clientAppDeviceId("SOME_CLIENT_DEVICE_ID_VALUE")
        
    // configuration of customer grouping and naming in the web application
    .customerGroupingConfig(customerGroupingConfig)

    .build()

AntivirusConfig Options

Configuration options for Anti-Malware component of AppProtection.

val antivirusConfig = AntivirusConfig.Builder()

                // use default built in suggestions
                .useDefaultSuggestions(Boolean)

                // set factory for foreground service notification
                .setForegroundServiceNotificationFactory(notificationFactory)

                // set detailed configuration of smart protection
                .smartProtectionConfig(smartProtectionConfig)

                // change default threat mitigation UI - screen & notification
                .setThreatMitigationUIConfig(threatMitigationUIConfig)

                .build()

Threat Mitigation UI Config

Configuration options for threat mitigation that is a part of Anti-Malware.

val threatMitigationUIConfig = AntivirusConfig.ThreatMitigationUIConfig.Builder()	
                .notificationSmallIcon(R.drawable.my_notification_icon)	
                .notificationChannelId("AV-CHANNEL")	
                .screenDeleteIcon(R.drawable.custom_delete_icon)	
                .screenSettingsIcon(R.drawable.custom_settings_icon)	
                .screenTheme(R.style.CustomThreatScreenTheme)
                .customLocalization("cs")
                .build()

Smart Protection Config

Configuration options for smart protection that is a part of Anti-Malware.

val smartProtectionConfig = AntivirusConfig.SmartProtectionConfig.Builder()
                .smartProtectionEnabled(true)	
                .silentModeEnabled(true)	
                .smartProtectionIntervalHours(72)	
                .performInitialFirstUpdate(true)	
                .build()

RaspConfig Options

Configuration options for RASP component of AppProtection.

val raspConfig = RaspConfig.Builder()
    .checkEmulator(Boolean)
    .exitOnEmulator(Boolean)
    .checkRoot(Boolean)
    .exitOnRoot(Boolean)
    .exitOnRootMinConfidence(Float) // value from 0.0 to 1.0
    .checkDebugger(Boolean)
    .exitOnDebugger(Boolean)
    .checkRepackaging(Boolean)
    .exitOnRepackaging(Boolean)
    .signatureHash(String)          // SHA-1 of signing certificate(s)
    .checkScreenSharing(Boolean)
    .exitOnScreenSharing(Boolean)
    .blockScreenshots(Boolean)
    .blockScreenReaders(Boolean)
    .allowedScreenReaders(Collection<RaspConfig.ApkAllowlist>)
    .customProcessName(String)      // when set, turns of useStealthyProcessName
    .useStealthyProcessName(Boolean)
    .blockTapjacking(Boolean)
    .blockTapjackingSensitivity(ThreatIndex)
    .checkHttpProxy(Boolean)
    .exitOnHttpProxy(Boolean)
    .build()

Customer Grouping and Naming Options

Configuration options for customer grouping on web console.

val customerGroupingConfig = AppProtectionConfig.CustomerGroupingConfig.Builder()
    .sourcePackageName(String) // max len 255 characters
    .appPackageName(String) // max len 255 characters
    .audienceGroupId(String) // max len 20 characters
    .build()
Last updated on Mar 02, 2022 (14:30) View product
Search

0.18.x

Malwarelytics for Android