Google自己出品的dex转jar工具enjarify的介绍
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
如果机器上没安装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基本理解
- 新手学习linux需了解的内容
- Android学习系列(一)初识安卓
- 想抢先体验Android操作系统的魅力吗?那就使用Android(安卓)LiveCD
- Android牛博
- Android中配置和使用Google Map服务
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用