A macOS security tool that detects and neutralizes suspicious overlay applications
Mirror is a simple macOS application designed to identify and terminate suspicious overlay applications that may be used for cheating, monitoring, or other malicious purposes. It scans active windows on your system and flags applications with suspicious characteristics like hidden layers, transparency, or missing window titles.
- π Intelligent Detection: Automatically scans and identifies suspicious overlay applications using advanced window analysis
- π Risk Scoring: Categorizes detected apps by risk level (High, Medium, Low) based on multiple factors
- β‘ Real-time Monitoring: Continuously monitors your system for suspicious applications
- π‘οΈ Apple App Filtering: Automatically excludes legitimate macOS system applications
- π― One-Click Termination: Instantly neutralize detected suspicious applications
- πΌοΈ Visual Identification: Displays app icons and bundle information for easy identification
- πΎ Persistent State: Remembers your onboarding preferences using SwiftData
- macOS: 13.0 (Ventura) or later
- Xcode: 15.0 or later
- Swift: 5.9 or later
-
Clone the repository
git clone https://github.com/ajagatobby/mirrow cd mirrow -
Open the project in Xcode
open Mirror.xcodeproj
-
Build and run
- Select your target Mac as the build destination
- Press
βR(Cmd + R) or click the "Run" button in Xcode - The app will build and launch automatically
-
Navigate to the project directory
cd mirrow -
Build the project
xcodebuild -project Mirror.xcodeproj -scheme Mirror -configuration Release
Note: If you encounter code signing errors, see the Code Signing section below.
-
Run the built app
open build/Release/Mirror.app
When building from the command line, you may encounter code signing errors like:
error: No signing certificate "Mac Development" found: No "Mac Development" signing certificate matching team ID "..." with a private key was found.
The easiest way to avoid signing issues is to build directly in Xcode:
- Open
Mirror.xcodeprojin Xcode - Go to Signing & Capabilities in the project settings
- Select your Team (or choose "Sign to Run Locally" for development)
- Build and run using
βR
For local development builds, you can disable code signing:
xcodebuild -project Mirror.xcodeproj -scheme Mirror -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NOWarning: This creates an unsigned app that may have limited functionality. For production use, proper code signing is required.
Sign with your Apple ID for local development:
xcodebuild -project Mirror.xcodeproj -scheme Mirror -configuration Release CODE_SIGN_IDENTITY="-" CODE_SIGNING_REQUIRED=YES CODE_SIGNING_ALLOWED=NOMirror requires certain permissions to function properly:
When you first run Mirror, macOS will prompt you to grant Screen Recording or Accessibility permissions. This is required for the app to:
- Access window information on your system
- Detect overlay applications
- Identify suspicious processes
To grant permissions manually:
- Open System Settings (or System Preferences on older macOS versions)
- Go to Privacy & Security β Screen Recording (or Accessibility)
- Find Mirror in the list and enable the toggle
- Restart Mirror if it's already running
Mirror needs permission to terminate processes. If you encounter permission issues:
- Go to System Settings β Privacy & Security β Full Disk Access
- Add Mirror to the list if required by your macOS version
- Welcome Screen: On first launch, you'll see an animated welcome screen
- Onboarding: The app will guide you through its features
- Auto-Detection: After onboarding, Mirror automatically performs its first scan
-
Automatic Detection: Mirror automatically scans for suspicious apps when launched
-
Manual Detection: Click the "Detect" button to perform a new scan anytime
-
View Results: Detected applications are displayed in a list with:
- App icon
- Application name
- Bundle identifier
- Process ID (PID)
- Risk indicators (alpha transparency, missing titles, etc.)
-
Terminate Apps: Click the "Kill" button next to any suspicious app to terminate it
- The button changes to "Neutralized" after successful termination
- Uses
SIGTERMfollowed bySIGKILLif needed
Right-click on any detected app to access:
- Copy Bundle ID: Copy the app's bundle identifier to clipboard
- Copy PID: Copy the process ID to clipboard
- Show in Finder: Reveal the app's location in Finder
Mirror uses macOS's Core Graphics framework to enumerate all active windows on your system. It then applies a sophisticated scoring algorithm to identify suspicious applications:
- Window Enumeration: Scans all on-screen windows using
CGWindowListCopyWindowInfo - Risk Scoring: Assigns scores based on:
- Window Layer: Higher layers (especially β₯20) indicate overlays (+2 to +3 points)
- Transparency: Alpha < 1.0 suggests hidden windows (+1 point)
- Missing Titles: Empty window titles are suspicious (+1 point)
- Filtering: Excludes:
- Apple system applications (
com.apple.*) - Applications in system directories (
/System/,/Library/,/usr/) - Low-risk applications (score < 1 or layer < 1)
- Apple system applications (
- Sorting: Results are sorted by risk score, layer, and application name
- π΄ High Risk: Score β₯ 5
- π‘ Medium Risk: Score 2-4
- π’ Low Risk: Score < 2
Mirror/
βββ Mirror/
β βββ MirrorApp.swift # App entry point
β βββ Models/ # Data models
β β βββ Item.swift
β β βββ OnboardingState.swift
β β βββ RiskLevel.swift
β β βββ WindowAppRow.swift
β βββ ViewModels/ # Business logic
β β βββ DetectorViewModel.swift
β βββ Views/ # UI components
β β βββ ContentView.swift
β β βββ MainAppView.swift
β β βββ Components/
β β β βββ AppRowView.swift
β β β βββ EmptyStateView.swift
β β β βββ SkeletonRowView.swift
β β βββ Onboarding/
β β βββ OnboardingView.swift
β β βββ WelcomeView.swift
β βββ Mirror.entitlements # App entitlements
βββ README.md
- Open
Mirror.xcodeprojin Xcode - Select the Mirror scheme
- Choose your Mac as the build destination
- Build using
βB(Cmd + B)
xcodebuild test -project Mirror.xcodeproj -scheme MirrorThis project follows Swift's standard formatting conventions. Consider using:
- SwiftFormat for automatic formatting
- SwiftLint for code quality checks
Contributions are welcome! Please feel free to submit a Pull Request. Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Bug fixes
- β¨ New features
- π Documentation improvements
- π¨ UI/UX enhancements
- β‘ Performance optimizations
- π§ͺ Test coverage
Mirror is a security tool designed to help identify potentially suspicious applications. However:
- Use at your own risk: Terminating processes can cause data loss if used incorrectly
- False positives: Some legitimate applications may be flagged
- Not a replacement: This tool should not replace proper security software
- Educational purpose: Intended for educational and security research purposes
Always verify applications before terminating them, especially if you're unsure about their purpose.
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with β€οΈ for the macOS community