2017-10-30 2 views
-1

Ich möchte Methode aus allen .smalli-Datei extrahiert.
Gibt es ein Format, um Methoden (API-Funktionen) in .smalli-Datei zu deklarieren, so kann ich es leicht mit Python-Skript extrahieren. Ich bin auf der Suche nach Konzept, so dass ich identifizieren kann, wie 1. Benutzerdefinieren Funktion 2. API-Funktion 3. API-Aufrufsequenz sind definiert und deklariert. Ich möchte nur API-Funktionen und API-Aufrufsequenz mit Python zu drucken.Wie kann ich Methoden identifizieren, die in der .smali-Datei deklariert sind?

+0

Haben Sie smali oder dex bedeuten? Enjarify analysiert Dex-Dateien und ist in Python geschrieben. – Antimony

+0

ich meine smali. Ich möchte API-Funktionen aus .smali-Datei extrahieren, aber ich bin nicht in der Lage zu verstehen, welche API-Funktionen sind. Gibt es eine spezielle Möglichkeit, API-Funktionen zu definieren, so dass ich sie aus .smalli-Datei identifizieren kann. Ich möchte API-Aufrufsequenz auch extrahieren, also gibt es irgendwelche Weisen, mit denen ich API Anrufreihenfolge identifizieren und es extrahieren kann. –

Antwort

0

Die Frage fragt nach Parsing Smali-Dateien, aber das ist wahrscheinlich nicht das, was Sie eigentlich wollen. Angenommen, Ihr Ziel besteht darin, Android-Anwendungen zu analysieren, müssen Sie die Dateien dex analysieren. Glücklicherweise gibt es ein in Python geschriebenes Tool namens Enjarify, das einen Dex-Parser enthält. Es ist nicht dazu gedacht, als eine Bibliothek verwendet zu werden, daher wird es ein wenig Arbeit in Anspruch nehmen, es zu integrieren, aber Sie sollten es ziemlich leicht herausfinden können. Sie können beginnen, indem Sie auf parsedex.py schauen.

Angenommen, Sie möchten wirklich Smali-Dateien aus irgendeinem Grund analysieren, Dinge sind viel schwieriger, als Smali ist ein Dateiformat durch das Smali-Tool, das in Java geschrieben definiert ist. Sie könnten jedoch Jython verwenden, um es von Python aus aufzurufen.

+0

Danke, ich möchte Funktionen und API-Aufruf-Sequenz aus .smalli Datei extrahieren und ich möchte Feature-Vektor für meine Forschungsarbeit erstellen. Ich habe baksmali Werkzeug verwendet, um calssses.de in .smalli Dateien umzuwandeln. für Beispiel Landroid/App/Activity -> ist Methode (Activity-Methoden werden wie folgt geschrieben). Ich will nicht benutzerdefinierte Methoden, sondern nur Android-API wie loadjar(), setcomponent() etc. dann, wie System API und Aufrufreihenfolge zu identifizieren. Derzeit suche ich Konzepte Sichtweise zu verstehen .smalli-Datei und wie kann ich System-API, Call-Sequenz zu identifizieren. –

0

Folgende ist Syntax, die verwendet wird .Smali Funktion zu identifizieren aufruft

  1. invoke-super vx, vy,: ruft die Methode in übergeordneten Klassen-Objekt vx, vorbei im Parameter (s) vy.
  2. invoke-direct vx, vy: ruft eine Methode in Objekt vx mit den Parametern vy, ... ohne die Auflösung der virtuellen Methode auf.
  3. invoke-virtual vx, vy: ruft die virtuelle Methode in Objekt vx auf und übergibt die Parameter vy.

folgenden Links bieten gute Quelle mit .smalli Datei zu starten https://apkudo.com/?p=775

Verwandte Themen