APK-Analysator

Legen Sie ein Android-Paket — eine .apk-Datei — ab und lesen Sie, was es über sich selbst erklärt, bevor es einem Telefon auch nur nahekommt: seinen Paketnamen und seine Version, die SDK-Stufen, auf die es zielt, jede Berechtigung, die es verlangt, ob es Debugging und Backups erlaubt, welche seiner Komponenten andere Apps erreichen können und mit welchen Zertifikaten es signiert ist. Die Datei verlässt Ihr Gerät nie: Sie wird auf dieser Seite geöffnet und geparst, nicht hochgeladen, denn eine APK, der Sie misstrauen, ist genau die Datei, die Sie nicht auf den Server eines Fremden geben sollten.

Oder legen Sie die Datei irgendwo in diesem Feld ab. Alles Folgende wird aus dem Paket selbst gelesen, auf diesem Gerät — das Manifest, die kompilierten Ressourcen und die Signaturblöcke.

Was eine APK erklärt, bevor sie eine Zeile Code ausführt

Eine APK ist ein ZIP-Archiv mit Meinungen. Bevor Android irgendeinen Code daraus ausführt, liest das System die darin enthaltene binäre AndroidManifest.xml, und diese eine Datei ist eine überraschend vollständige Absichtserklärung. Sie nennt das Paket — die Identität, gegen die Updates abgeglichen werden — und seine Version. Sie nennt die älteste Android-Version, die die App angeblich unterstützt, und die, nach deren Verhaltensregeln sie gebaut wurde; deshalb zählt das Ziel-SDK: Ein niedriges Ziel hält älteres, lockereres Berechtigungsverhalten still am Leben. Sie listet jede Berechtigung auf, die die App je wird nutzen können, denn eine nicht deklarierte Berechtigung kann später nicht erteilt werden. Sie sagt, ob der Build debuggbar ist — ein Flag, das ein Release nie überleben sollte — und ob seine Daten in Geräte-Backups geraten dürfen. Und sie inventarisiert die Komponenten der App: Activities, Services, Receiver und Provider, jede mit einem Exportzustand, der entscheidet, ob andere Apps auf dem Gerät sie aufrufen können. Eine exportierte Komponente ohne Berechtigungsprüfung ist die klassische Android-Angriffsfläche, und Sie sehen sie hier, im Manifest, ohne irgendetwas zu installieren.

Die andere Hälfte der Geschichte ist die Signatur. Android installiert ein Update nur dann über einer vorhandenen App, wenn beide mit demselben Schlüssel signiert sind; der Fingerabdruck des Signaturzertifikats ist also die Identitätskontinuität der App: Derselbe Paketname, mit einem anderen Schlüssel signiert, ist eine andere App mit vertrautem Label. Diese Seite liest beide Signaturgenerationen — die Jar-artigen Zertifikate in META-INF und den APK Signature Scheme v2/v3-Block — und zeigt für jeden Signierer Subjekt, Aussteller, Gültigkeitsfenster und SHA-256-Fingerabdruck, den der Zertifikat- und Schlüsselabgleich mit einem Schlüssel oder CSR vergleichen kann, den Sie besitzen. Der Begleitartikel Was in einer APK steckt, bevor Sie sie installieren führt die ganze Prüfung als Checkliste aus. Zwei ehrliche Grenzen: Diese Seite liest Deklarationen, kein Verhalten — sie dekompiliert keinen Code, führt die App nicht aus und beurteilt nicht, ob sie Malware ist — und wo das Manifest selbst mehrdeutig ist (ein ausgelassenes exported-Flag an einer Komponente mit Intent-Filter, ein Label, das die kompilierten Ressourcen nicht auflösen), sagt sie das, statt die Lücke mit einer Vermutung zu füllen. Für das, was die App im Netz tut, sobald sie läuft, liest der PCAP-Analysator den Mitschnitt.

Häufige Fragen

Wohin geht meine APK-Datei?

Nirgendwohin. Die Datei wird auf dieser Seite, auf Ihrem Gerät geöffnet und geparst, und nichts wird hochgeladen, übertragen oder gespeichert — die Analyse einer Datei löst keine Netzwerkanfrage aus. Hier zählt das mehr als bei den meisten Tools: Die APKs, die man am dringendsten prüfen will, sind die, denen man schon misstraut — eine Datei aus einem Forum, ein direkter Download, ein Shop-Eintrag, der falsch aussieht — und eine verdächtige Binärdatei an einen entfernten Scan-Dienst zu schicken, ist selbst eine Exposition. Nach dem Laden der Seite funktioniert es auch offline.

Was sollte ich vor der Installation einer APK prüfen?

Vier Dinge, alle oben sichtbar. Der Paketname: Ist es der echte Namensraum des Herausgebers oder ein Nachahmer mit einem veränderten Zeichen? Die Berechtigungen: Braucht eine Taschenlampen-App wirklich Ihre Kontakte, Ihr Anrufprotokoll und Ihren genauen Standort — und versteckt sich eine Anfrage auf Signatur- oder Spezialstufe als Routine? Die exportierten Komponenten: Jede Activity, jeder Service, Receiver oder Provider, den andere Apps erreichen können, ist Angriffsfläche, die Sie akzeptieren. Und der Signierer: Ein Update muss dasselbe Signaturzertifikat tragen wie die installierte App, also vergleichen Sie den SHA-256-Fingerabdruck mit der Kopie, der Sie vertrauen, bevor Sie eine „neuere Version“ von irgendwoher querladen.

Kann das sagen, ob eine App Malware ist?

Nein, und jedes Tool, das das allein aus einem Manifest verspricht, verspricht zu viel. Diese Seite liest, was das Paket deklariert — Identität, Berechtigungen, Komponenten, Flags und Signaturen —, und das reicht, um die Nachlässigen und die Nachahmer zu erwischen: einen Klon mit falschem Signierer, eine Taschenlampe, die SMS-Zugriff fordert, einen Release-Build, der debuggbar geblieben ist. Was der Code wirklich tut, braucht Dekompilierung, dynamische Analyse oder das Urteil eines seriösen Scanners über die Binärdatei selbst. Behandeln Sie ein sauberes Ergebnis hier als „nichts Deklariertes sieht falsch aus“, nie als Sicherheitszertifikat.

Warum steht bei manchen Berechtigungen „nicht in der Referenztabelle“?

Weil Ehrlichkeit eine plausible Vermutung schlägt. Die gezeigten Schutzstufen — normal, gefährlich, Signatur, spezial — stammen aus einer kuratierten Tabelle der bekannten android.*-Berechtigungen und der Stufe, die das Framework jeder zuweist. Anbieter fügen eigene Berechtigungen hinzu, Hersteller noch mehr, und neue Android-Versionen bringen neue Namen; keine davon steht in der Tabelle, also sagt die Seite das ausdrücklich. Eine unbekannte Stufe bedeutet nicht, dass die Berechtigung harmlos oder gefährlich ist — sie bedeutet, dass diese Referenz sie nicht abdeckt, und der eigene Name und Namensraum der Berechtigung sind der Ausgangspunkt zum Prüfen.

Was bedeutet „Exportiert: nicht angegeben“?

Es bedeutet, dass das Manifest es wirklich nicht sagt. Wenn eine Komponente einen Intent-Filter deklariert, aber android:exported auslässt, hing die wirksame Antwort historisch vom Ziel-SDK der App und von der Android-Version ab — ältere Regeln exportierten solche Komponenten standardmäßig, neuere verweigern die Installation der App, bis der Entwickler sich entscheidet. Ein Leser, der ein selbstsicheres Ja oder Nein ausdruckte, würde eine Tatsache erfinden, die die Datei nicht enthält; diese Seite meldet deshalb die Auslassung selbst. In Ihren eigenen Builds ist das die eine Zeile, die es explizit zu korrigieren lohnt.