Enjarify:Dalvik字节码转Java的工具

Enjarify是一款将Dalvik字节码转换为Java字节码的工具,适用于分析Android应用。需要Python环境支持。
clickgpt_line.png_noView
介绍

嘿,大家有没有遇到过想要分析Android应用但被Dalvik字节码搞得晕头转向的情况?别担心,我有个好东西要推荐给你们——Enjarify!这个工具专门用来把Dalvik字节码翻译成Java字节码,简直是逆向分析的好帮手。

首先呢,Enjarify是用Python 3写的,所以你得先有个Python环境。安装起来也不复杂,直接从GitHub上克隆下来就行。然后在终端里跑个命令就能用,像这样:

    
bash
python3 -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选项来指定。比如:

    
bash
enjarify yourapp.apk -o yourapp.jar

要是输出文件已经存在,Enjarify默认是不会覆盖的,不过你可以用-f或者--force选项来强制覆盖。

你可能会问,为什么不用dex2jar呢?其实dex2jar也是个不错的工具,但它在处理一些边缘情况时可能会出错。而Enjarify则是尽可能地处理所有情况,比如处理Unicode类名、多类型常量、隐式转换等等。

不过呢,Enjarify也有些小限制,比如它不会翻译一些可选的元数据,比如源文件属性、行号和注释。不过这些对大多数分析任务来说都不是问题。

如果你想要更快的速度,可以考虑用PyPy来代替CPython,PyPy的速度可是快多了。Linux用户用enjarify.sh脚本时会自动使用PyPy3,如果你在Windows上用,那就得自己编辑一下脚本。

最后嘛,我觉得Enjarify真的是个很实用的工具,特别是对那些想要深入分析Android应用的人来说。虽然它不是Google的官方产品,但它的功能和稳定性都很不错。希望你们也能试试看!

编程学习
编程学习 免费领取编程学习资料 进编程学习交流群
订阅号
视频号
公众号 关注公众号,回复关键字java领取大厂最新面试题
×
编程学习
免费领取编程学习资料 进编程学习交流群