Is there a way to get a list of all classes from a .dex file?

后端 未结 5 602

I have a .dex file, call it classes.dex.

Is there a way to \"read\" the contents of that classes.dex and get a list of all class

相关标签:
5条回答
  • 2021-01-30 16:52

    dxshow mydexfile.dex

    dxshow:

    strings -a $1 | grep "^L.*/" | grep -v "Ljava" | grep -v "Landroid" | sed "s/^L\(.*\);/\1/" | sed "s:/:.:g"

    ezpz hack... didn't wanna spend a lifetime java coding

    0 讨论(0)
  • 2021-01-30 16:55

    baksmali has functionality to do this starting in baksmali v2.2.

    baksmali list classes my.dex will print a list of all classes in the given dex file.

    Reference: It is downloadable from here: https://github.com/JesusFreke/smali.

    0 讨论(0)
  • 2021-01-30 17:07

    You can use dex2jar utility that will convert .dex to .jar.

    http://code.google.com/p/dex2jar/

    Then you can extract that .jar file.

    Also , you can use this framework

    Dedexer

    0 讨论(0)
  • 2021-01-30 17:10

    Use the command line tool dexdump from the Android-SDK. It's in $ANDROID_HOME/build-tools/<some_version>/dexdump. It prints a lot more info than you probably want. I didn't find a way to make dexdump less verbose, but

    dexdump classes.dex | grep 'Class descriptor'
    

    should work.

    0 讨论(0)
  • 2021-01-30 17:13

    You can use the dexlib2 library as a standalone library (available in maven), to read the dex file and get a list of classes.

    DexFile dexFile = DexFileFactory.loadDexFile("classes.dex", 19 /*api level*/);
    for (ClassDef classDef: dexFile.getClasses()) {
        System.out.println(classDef.getType());
    }
    

    Note that the class names will be of the form "Ljava/lang/String;", which is how they are stored in the dex file (and in a java class file). To convert, just remove the first and last letter, and replace / with .

    0 讨论(0)
提交回复
热议问题