jadx - java.io.file para que sirve
¿Hay alguna manera de obtener una lista de todas las clases desde un archivo.dex? (4)
Tengo un archivo .dex
, llámalo classes.dex
.
¿Hay alguna forma de "leer" el contenido de esa classes.dex
y obtener una lista de todas las clases como nombres de clase completa, incluido su paquete, com.mypackage.mysubpackage.MyClass
, para exmaple?
Estaba pensando en com.android.dx.dex.file.DexFile
, pero parece que no puedo encontrar un método para recuperar un conjunto completo de clases.
Puede usar la biblioteca dexlib2 como una biblioteca independiente ( disponible en maven ), para leer el archivo dex y obtener una lista de clases.
DexFile dexFile = DexFileFactory.loadDexFile("classes.dex", 19 /*api level*/);
for (ClassDef classDef: dexFile.getClasses()) {
System.out.println(classDef.getType());
}
Tenga en cuenta que los nombres de las clases serán de la forma "Ljava / lang / String;", que es cómo se almacenan en el archivo dex (y en un archivo de clase java). Para convertir, simplemente elimine la primera y la última letra, y reemplace / con.
Puede usar la utilidad dex2jar
que convertirá .dex
a .jar.
http://code.google.com/p/dex2jar/
Entonces puedes extraer ese archivo .jar
.
Además, puedes usar este marco
Use la herramienta de línea de comandos dexdump
del Android-SDK. Está en $ANDROID_HOME/build-tools/<some_version>/dexdump
. Imprime mucha más información de la que probablemente desee. No encontré una manera de hacer dexdump
menos detallado, pero
dexdump classes.dex | grep ''Class descriptor''
Deberia trabajar.
baksmali tiene la funcionalidad para hacer esto comenzando en baksmali v2.2.
baksmali list classes my.dex
imprimirá una lista de todas las clases en el archivo dex proporcionado.