Zurück zu den Updates
New releaseSep 7, 2026

Veto v2.3

Open-Source-Android-Client für VirusTotal. Scannen Sie Dateien, URLs und installierte Apps mit über 70 Antiviren-Engines. Zeigen Sie detaillierte Berichte mit Hashes, Bedrohungsklassifikationen, YARA-Übereinstimmungen und Sandbox-Verhalten an. Kein Tracking und keine Werbung.

Teilen
Veto, der Open-Source-VirusTotal-Client

Veto

Ein Open-Source-VirusTotal-Client für Android

Kostenlos und Open Source. Bringen Sie Ihren eigenen VirusTotal-API-Schlüssel mit, um Dateien, Links und installierte Anwendungen gegen über 70 Engines zu scannen – entwickelt mit einer Material-3-Oberfläche. Keine Konten, kein Tracking, keine Werbung.

Platform Kotlin Jetpack Compose minSdk

Was ist Veto?

Veto ist ein Android-Client für VirusTotal. Reichen Sie eine Datei, einen Link oder eine installierte Anwendung ein, um Echtzeit-Analyseergebnisse zu sehen. Die Anwendung zeigt einen klaren Bericht, der von einem einzigen einheitlichen Urteil bis hin zum vollständigen Satz der vom Dienst zurückgegebenen Felder reicht.

Das Projekt ist kostenlos und Open Source und enthält keine Benutzerkonten, Tracking-Systeme oder Werbung. Da Benutzer ihren eigenen VirusTotal-API-Schlüssel bereitstellen, laufen alle Scans direkt unter ihrem persönlichen Konto, ohne über zwischengeschaltete Drittanbieter-Server geleitet zu werden.


Screenshots

Dashboard-BildschirmBildschirm mit sauberen ErgebnissenBildschirm mit detailliertem Bericht
Einstellungen-BildschirmBildschirm mit gespeicherten Scans

Funktionsumfang

  • Scan-Fähigkeit: Scannt installierte Apps, lokale Dateien oder Ziel-URLs.
  • Multi-Engine-Aggregation: Kombiniert Diagnosen von über 70 Antiviren-Engines.
  • Zwei Berichtsmodi: Schnellmodus für schnelle Verifizierungsübersichten und Detaillierter Modus für tiefgehende Prüfungen.
  • Kontextuelle Erklärungen: Erklärtexte sind für jeden Abschnitt verfügbar, mit einer Einstellung zum Ausblenden der Erklärungen, falls gewünscht.
  • Hochauflösende Berichte: Zeigt Datei-Hashes, Bedrohungsklassifikationen, Verlauf, Community-Abstimmungen, Sandbox-Verhalten, YARA-Treffer, Android-Anwendungsinterna und alle zusätzlichen API-Payload-Felder an.
  • Hintergrundausführung: Echtzeit-Upload- und Analyse-Fortschrittsverfolgung, die in einem Hintergrunddienst fortbesteht.
  • Offline-Zugriff: Speichert Berichte lokal, um sie später erneut prüfen zu können, auch ohne Internetverbindung.
  • Rate-Limit-Warnungen: Zeigt klare Benachrichtigungen an, wenn der lokale API-Schlüssel sein Rate-Limit erreicht.
  • Theming: Vollständige Material-3-Unterstützung mit dynamischen Systemfarben, die sowohl helle als auch dunkle Designs unterstützt.

Details zur Implementierung der Kernarchitektur

  • Zustandssynchronisierung: Der anwendungsbezogene ScanManager dient als zentrale Quelle der Wahrheit für alle Scan-Zustände. Dadurch bleibt die Benutzeroberfläche synchronisiert, unabhängig davon, ob die App im Vordergrund aktiv, im Hintergrund angehalten oder vom Betriebssystem zerstört wurde.
  • Robustes Polling: Die App fragt den Endpunkt /analyses/{id} mit einer Sechs-Minuten-Wanduhr-Obergrenze ab. Wenn eine Rate-Limit-Antwort auftritt, wartet der Prozess, anstatt zu scheitern. Der Bericht wird erneut abgerufen, bis die Ergebnisse gefüllt sind, und gibt einen strukturierten Fehlerzustand zurück, wenn das Zeitlimit erreicht wird.
  • Prozesslebenszyklus: Während sich der ScanState innerhalb des ScanManager befindet, um die Zerstörung der Activity zu überstehen, hält ScanService den Prozesslebenszyklus während aktiver Vorgänge aufrecht und verwaltet laufende und abgeschlossene Benachrichtigungen.
  • Parsing mit voller Wiedergabetreue: Gemeinsame Felder werden mit typisierten Modellen erfasst, während das vollständige rohe attributes-JSON über einen benutzerdefinierten Serializer beibehalten wird. Dadurch kann die detaillierte Berichtsansicht alle zurückgegebenen Felder rendern, einschließlich neuer Felder, die im Laufe der Zeit zur API-Payload hinzugefügt werden.

Technologie-Stack

EbeneTechnologieRolle im Projekt
SpracheKotlinPrimäre Programmiersprache
UI-FrameworkJetpack ComposeDeklarative UI-Struktur
DesignsystemMaterial 3Visuelle Gestaltung, dynamische Systemfarben und erweiterte Symbole
AbhängigkeitsinjektionHiltAbhängigkeitsverwaltung
NetzwerkRetrofit & OkHttpHTTP-Kommunikation mit der VirusTotal-API
Serialisierungkotlinx.serializationTypsicheres JSON-Parsing und benutzerdefinierte Attributerhaltung
AsynchronitätKotlin CoroutinesAsynchrone Programmierung und Hintergrundverarbeitung
PersistenzJetpack DataStoreSpeicherung dynamischer Einstellungen und gespeicherter Scan-Berichte
KompatibilitätSDK 30 bis 36Kompiliert mit JDK 17, minSdk 30, targetSdk 36

Projektstruktur

└── app/src/main/java/com/quantum_prof/vtscansuite/
    ├── data/          # Modelle, Remote-API und Repository-Implementierung
    ├── domain/        # Repository-Schnittstelle und Geschäftsanwendungsfälle
    ├── di/            # Hilt-Abhängigkeitsinjektionsmodule
    ├── scan/          # ScanManager, ScanService und Systembenachrichtigungen
    └── ui/            # UI-Komponenten und Präsentationsschichten
        ├── intro/     # Splash-Screen und API-Schlüsselkonfiguration
        ├── dashboard/ # Navigationszentrum: Link-, Datei- und App-Scanmodule
        ├── results/   # Schnell- und Detailbericht-Visualisierer
        ├── components/# Wiederverwendbare UI-Elemente und Layouts
        ├── theme/     # Farb-, Form-, Typografie- und Bewegungskonfigurationen
        └── util/      # Haptisches Feedback, Gesten und Deep-Linking-Dienstprogramme
  • Store-Listing-Assets und Textressourcen sind in fastlane/metadata/android/en-US/ verfügbar.
  • Bearbeitbare Mockup-SVGs befinden sich in docs/store/svg/.
  • Mockups können mit docs/store/export.html in das PNG-Format exportiert werden.

Erste Schritte

Voraussetzungen

Erstellen und Ausführen

Klonen Sie das Repository und kompilieren Sie den Debug-Build über die Befehlszeile:

git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug

Alternativ öffnen Sie das Stammverzeichnis in Android Studio und wählen die Run-Konfiguration.

Geben Sie beim ersten Start Ihren VirusTotal-API-Schlüssel im Einführungs-Setup-Bildschirm ein. Der Schlüssel wird lokal auf Ihrem Gerät gespeichert, mit einem AES-256-GCM-Schlüssel aus dem Android Keystore verschlüsselt und von Cloud-Backups und Gerät-zu-Gerät-Übertragungen ausgeschlossen. Kostenlose API-Schlüssel sind in der Regel auf vier Abfragen pro Minute begrenzt.


Datenschutzrichtlinie

Die Anwendung kommuniziert ausschließlich mit der VirusTotal-API unter Verwendung der von Ihnen bereitgestellten Anmeldeinformationen. Hochgeladene Dateien, übermittelte URLs und dynamische Ergebnisse werden direkt an die Server von VirusTotal gesendet. Der API-Schlüssel wird lokal auf Ihrem Gerät gespeichert, mit einem AES-256-GCM-Schlüssel aus dem Android Keystore verschlüsselt und von Cloud-Backups und Gerät-zu-Gerät-Übertragungen ausgeschlossen, sodass er das Gerät nie verlässt. Die HTTP-Protokollierung ist auf Debug-Builds beschränkt und schwärzt den Schlüssel-Header. Veto sammelt keine Analysedaten und enthält keine Werbe-SDKs.


Lizenz

Dieses Projekt ist unter den Bedingungen der GNU General Public License v3.0 lizenziert.

Kernbedingungen der GPLv3:

  • Kommerzielle Nutzung: Erlaubt
  • Modifikation: Erlaubt
  • Verbreitung: Erlaubt
  • Offenlegung des Quellcodes: Bei Verbreitung erforderlich
  • Gleiche Lizenz: Modifizierter Code muss ebenfalls GPLv3 verwenden
  • Haftung & Garantie: Keine von den Autoren bereitgestellt

Weitere Details finden Sie in der Datei LICENSE in diesem Repository.


Unterstützt durch die VirusTotal-API. Nicht verbunden mit oder unterstützt von VirusTotal.

Kategorien