2016-04-24 11 views
1

wie aux # .smali.ist # Symbol im Namen einer Smali-Datei erlaubt?

Dieser Dateiname wurde erstellt, als ich die baksmali.jar auf der class.dex verwendet habe.

ist dies mit der Eigenschaft any class verwandt (d. H. Wenn die Klasse final ist, dann kommt dieses Problem.). wenn es dann ist, wie zur Laufzeit es auf den Code zugreifen wird, der Laux erwartet; -> a: [Lapb;

+0

Normalerweise sehen Sie Klassennamen wie diese, wenn die APK verschleiert wurde. Die Obfuscatoren versuchen, Macken auf dem Windows-Dateisystem auszunutzen, um Disassemblierung zu verhindern, da 'aux' reservierter Dateiname in Windows ist. – JesusFreke

Antwort

1

Sie können die BNF-Grammatik für zulässige Identifikatoren in den dex format specification

TypeDescriptor finden, ist die Top-Level-Regel, die Sie wollen, zu betrachten. SimpleName enthält eine Liste aller zulässigen Zeichen für jeden einzelnen Teil des Namens.

Um Ihre Frage über # spezifisch zu beantworten: ja, # ist ein zulässiges Zeichen wie durch die SimpleName Regel angegeben.

Die Klassen Laux#; und Laux; sind völlig unabhängig voneinander. Jede Bezugnahme auf Laux#; hat keine Beziehung zu der Klasse Laux;, außer durch die üblichen Regeln der Vererbung, falls zutreffend.

+0

so kann eine Fehlersituation sein, wenn ich versuche, die Dex-Datei zu dekompilieren und sie dann mit dem apktool neu zu erstellen, und zur Laufzeit kommt es zum Absturz. weil diese aux.smali-Klasse in aux # .smali umbenannt wird. –

+0

Nein. Wie gesagt, 'Laux #;' ist eine ganz andere Klasse. Wenn du es zerlegst und wieder zusammenfügst, wird "Laux;" immer noch "Laux;" und "Laux #;" wird immer noch "Laux #;" sein. Wenn Sie einen Absturz haben, dann schauen Sie sich die Stack-Trace und alle Fehler an, die dalvik/art in logcat erzeugt. Fühlen Sie sich frei, eine neue Frage zu schreiben, wenn Sie Hilfe mit dem Absturz benötigen. – JesusFreke