Enjarify:Dalvik字节码转Java的工具
嘿,大家有没有遇到过想要分析Android应用但被Dalvik字节码搞得晕头转向的情况?别担心,我有个好东西要推荐给你们——Enjarify!这个工具专门用来把Dalvik字节码翻译成Java字节码,简直是逆向分析的好帮手。
首先呢,Enjarify是用Python 3写的,所以你得先有个Python环境。安装起来也不复杂,直接从GitHub上克隆下来就行。然后在终端里跑个命令就能用,像这样:
bashpython3 -O -m enjarify.main yourapp.apk
当然啦,为了方便使用,你可以把它设置到你的路径里,这样随时随地都能用。Linux用户可以用提供的enjarify.sh
脚本,Windows用户则有enjarify.bat
脚本。只要把这些脚本加到你的PATH里就行。
使用起来也很简单,基本上就是指定一个APK文件或者DEX文件作为输入。比如说,你有个多DEX的APK文件,Enjarify会自动翻译所有的DEX文件,然后合并成一个JAR文件输出。如果你只想翻译一个DEX文件,那也没问题,直接指定就行。
输出文件默认是[输入文件名]-enjarify.jar
,如果你想要自定义输出文件名,可以用-o
或者--output
选项来指定。比如:
bashenjarify yourapp.apk -o yourapp.jar
要是输出文件已经存在,Enjarify默认是不会覆盖的,不过你可以用-f
或者--force
选项来强制覆盖。
你可能会问,为什么不用dex2jar呢?其实dex2jar也是个不错的工具,但它在处理一些边缘情况时可能会出错。而Enjarify则是尽可能地处理所有情况,比如处理Unicode类名、多类型常量、隐式转换等等。
不过呢,Enjarify也有些小限制,比如它不会翻译一些可选的元数据,比如源文件属性、行号和注释。不过这些对大多数分析任务来说都不是问题。
如果你想要更快的速度,可以考虑用PyPy来代替CPython,PyPy的速度可是快多了。Linux用户用enjarify.sh
脚本时会自动使用PyPy3,如果你在Windows上用,那就得自己编辑一下脚本。
最后嘛,我觉得Enjarify真的是个很实用的工具,特别是对那些想要深入分析Android应用的人来说。虽然它不是Google的官方产品,但它的功能和稳定性都很不错。希望你们也能试试看!