您的位置:首页 > 编程语言 > Go语言

Google自己出品的dex转jar工具enjarify的介绍

2015-10-20 14:07 796 查看
Android是使用Java语言进行编程的。但是,由于其使用了自己的Dalvik虚拟机,所以Android的指令集使用的是Dalvik,且可执行文件格式也是使用的专有的DEX格式。

这样的话,如果想反编译Android的程序,就需要专门的反编译工具软件。

但是,其实Android在编译的时候,其实是先使用Java的工具链,然后在用自己提供的dx程序,将编译好的Java程序,抓换成专属的DEX文件。

如果有一个工具可以将DEX文件反转成一个Java程序文件,就可以利用现有非常成熟的Java反编译工具。

最早实现这个想法的是一个叫dex2jar的工具,也被大家广泛的使用。

不过,最近Google自己写了一个类似的工具,名叫enjarify。该工具是使用Python语言编写的,代码位于:https://github.com/google/enjarify/

由于全是用Python语言写的,所以安装起来非常简单,直接用git将代码克隆到本地目录下就好了:

git clone https://github.com/google/enjarify.git[/code] 如果机器上没安装git,还可以点击“Download ZIP”,直接把当前的代码打包成一个zip文件下载下来。如果你没有办法访问github,可以从这里获得包含源码的zip文件。

由于enjarify使用Python 3的语法编写,所以请确保你的机器上有一个3.x版本的Python环境。

剩下的事情就很简单了,运行enjarify.sh(Linux或MAC下)或者enjarify.bat(Windows下),后面接上要转换的那个apk路径名作为参数就可以了:

enjarify yourapp.apk

当然,也可以直接转换apk里面的dex文件:

enjarify class.dex

如果你是在Linux系统下使用enjarify的话,可以在/usr/local/bin目录下,建立一个指向enjarify.sh的软链接:

ln -s "$PWD/enjarify.sh" /usr/local/bin/enjarify

由于在enjarify.sh脚本中使用到了realpath命令,所以如果在执行的过程中报错说找不到这个命令的话,还要事先安装一下。在Ubuntu下可以通过下面的命令:

sudo apt-get install realpath

经过试用,笔者发现这个工具完全可以替代dex2jar,而且转换的效果要比dex2jar好的多,错误也要少很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android DEX JAR enjarify