
A cross-platform mobile application framework for phishing detection research. Built with Kotlin Multiplatform, MsgVerify provides an extensible platform for studying cybersecurity awareness on mobile devices.
MsgVerify is a Kotlin Multiplatform (KMP) application framework with a shared codebase deployed on Android and iOS. It integrates the ContextGuard library for on-device machine learning inference and provides extensible architecture for researchers to customise datasets, visual indicators, and detection heuristics.
MsgVerify is designed as an extensible research platform for mobile security studies. Key extension points include:
MsgVerifyConfig.kt
HeuristicRegistry
See EXTENDING.md for detailed documentation on framework customisation.
MsgVerify is built on top of the ContextGuard library, which provides the core content verification engine. ContextGuard is a Kotlin Multiplatform library that encapsulates:
MsgVerify demonstrates how to integrate ContextGuard into a real-world application by providing:
Key Features:
MsgVerify/
├── composeApp/ # Main Kotlin Multiplatform application
│ ├── src/commonMain/ # Shared code (Android + iOS)
│ ├── src/androidMain/ # Android-specific code
│ ├── src/iosMain/ # iOS-specific code
│ └── src/commonTest/ # Shared tests
├── iosApp/ # iOS-specific implementation
└── mocks/ # Test data for demos
User Input
↓
HomeViewModel.onVerifyClicked()
↓
MsgVerifyRepository.verifyContent()
↓
ContentVerifierImpl (from ContextGuard library)
├─ ML Model Classification
│ └─ TextClassificationResult.Safe/Unsafe
├─ URL Detection & Scoring
│ └─ List<Float> urlScores
└─ Reason Analysis
└─ List<Reason> reasons
↓
LinkVerificationState Updates
├─ UI Re-composition
└─ History Management
Risk thresholds are configurable via MsgVerifyConfig.kt. Default values:
See EXTENDING.md for customisation instructions.
./gradlew :composeApp:assembleDebugiosApp/iosApp.xcodeproj in XcodeAll dependencies are managed via Gradle:
./gradlew buildNavigate to ios app with cd iosApp and install the dependency
pod installCreate file named Podfile in the iOS app directory. Copy and paste the following:
platform :ios, '13.0'
use_frameworks!
target 'iosApp' do
pod 'TensorFlowLiteObjC', '2.17.0'
pod 'TensorFlowLiteObjC/Metal', '2.17.0'
endInstall with pod install
The project includes mock data for testing and demonstrations:
mocks/
├── safe/
│ ├── sms.json
│ ├── emails.json
│ └── social_media_messages.json
└── malicious/
├── sms.json
├── emails.json
└── social_media_messages.json
MsgVerify supports iOS Shortcuts via VerifyMessageIntent.swift:
To test with a local build of the ContextGuard library:
settings.gradle.kts
testLocally = true
A cross-platform mobile application framework for phishing detection research. Built with Kotlin Multiplatform, MsgVerify provides an extensible platform for studying cybersecurity awareness on mobile devices.
MsgVerify is a Kotlin Multiplatform (KMP) application framework with a shared codebase deployed on Android and iOS. It integrates the ContextGuard library for on-device machine learning inference and provides extensible architecture for researchers to customise datasets, visual indicators, and detection heuristics.
MsgVerify is designed as an extensible research platform for mobile security studies. Key extension points include:
MsgVerifyConfig.kt
HeuristicRegistry
See EXTENDING.md for detailed documentation on framework customisation.
MsgVerify is built on top of the ContextGuard library, which provides the core content verification engine. ContextGuard is a Kotlin Multiplatform library that encapsulates:
MsgVerify demonstrates how to integrate ContextGuard into a real-world application by providing:
Key Features:
MsgVerify/
├── composeApp/ # Main Kotlin Multiplatform application
│ ├── src/commonMain/ # Shared code (Android + iOS)
│ ├── src/androidMain/ # Android-specific code
│ ├── src/iosMain/ # iOS-specific code
│ └── src/commonTest/ # Shared tests
├── iosApp/ # iOS-specific implementation
└── mocks/ # Test data for demos
User Input
↓
HomeViewModel.onVerifyClicked()
↓
MsgVerifyRepository.verifyContent()
↓
ContentVerifierImpl (from ContextGuard library)
├─ ML Model Classification
│ └─ TextClassificationResult.Safe/Unsafe
├─ URL Detection & Scoring
│ └─ List<Float> urlScores
└─ Reason Analysis
└─ List<Reason> reasons
↓
LinkVerificationState Updates
├─ UI Re-composition
└─ History Management
Risk thresholds are configurable via MsgVerifyConfig.kt. Default values:
See EXTENDING.md for customisation instructions.
./gradlew :composeApp:assembleDebugiosApp/iosApp.xcodeproj in XcodeAll dependencies are managed via Gradle:
./gradlew buildNavigate to ios app with cd iosApp and install the dependency
pod installCreate file named Podfile in the iOS app directory. Copy and paste the following:
platform :ios, '13.0'
use_frameworks!
target 'iosApp' do
pod 'TensorFlowLiteObjC', '2.17.0'
pod 'TensorFlowLiteObjC/Metal', '2.17.0'
endInstall with pod install
The project includes mock data for testing and demonstrations:
mocks/
├── safe/
│ ├── sms.json
│ ├── emails.json
│ └── social_media_messages.json
└── malicious/
├── sms.json
├── emails.json
└── social_media_messages.json
MsgVerify supports iOS Shortcuts via VerifyMessageIntent.swift:
To test with a local build of the ContextGuard library:
settings.gradle.kts
testLocally = true