2017-03-15 1 views
0

I dexlib2 bin mit statischer Zeichenfolge ersetzen von dex file.As einem ersten Schritt, ich habe unten Stück Code geschrieben Klassen in dex-Dateien zu erhalten:Dexlib2 nicht scannig Code der Anwendung in Dexrewriter

 try { 
     DexBackedDexFile dexFile = DexFileFactory.loadDexFile("classes.dex", 24); 
     Iterator iterator = dexFile.getClasses().iterator(); 

     while (iterator.hasNext()) { 
      System.out.println("Value: " + iterator.next() + " "); 
     } 

     System.out.println("done"); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

Ausgabe Ist es das Drucken aller Klassen anders als von meinem Code.

Jeder hat dasselbe Problem? Zur Verdeutlichung ist meine Dex-Datei eine Dex-Datei aus mehreren Dex-Dateien, da meine App die Multidex-Funktion verwendet.

+0

Die Klassen einer Anwendung können sich in einer beliebigen Dex-Datei in einer Multidex-Anwendung befinden. – JesusFreke

+0

@JesusFreke: Ich habe die Dex-Datei, die diesen Code hat, wie ich es mit dem Dex2jar-Tool überprüft. Ein anderer Punkt ist vielleicht, dass es mit dem API-Level zu tun hat, den ich für Opcodes angegeben habe. Auch meine Hauptaufgabe ist es, bestimmte String-Konstante zu ersetzen. ist es mit Dexlib2 Dexrewriter-Klasse möglich? –

+0

Der Code, der über Klassen iteriert, ist relativ einfach und enthält keine bekannten Fehler. Wenn sich die Klasse in der Dex-Datei befindet, wird der Code, den Sie geschrieben haben, ihn während der Iteration finden und ausdrucken. Und ja, das ist möglich. Haben Sie versucht, in die anderen Dex-Dateien zu schauen? ;) – JesusFreke

Antwort

0

Es war Ausgabe von Multi-Dex-Dateien. Während andere Dex-Dateien iteriert werden, kann es Klassen finden.

Verwandte Themen