Android APK反编译

前言

为什么需要APK反编译?

是因为我们在平时开发APK的过程中,可能会遇到一些功能不知如何实现,但是有的软件已经实现了该功能,但是没有开源。这个时候,通过APK的反编译,我们就能从代码层面去看一下别人是如何实现这部分功能的。


工具

俗话说“工欲善其事,必先利其器”,所以想反编译APK,我们需要下面两个强大的工具(ps:这两个工具均可以跨平台):

  1. dex2jar
  2. jd-gui

进行反编译

接下来,我们就要使用上面的两个工具进行apk的反编译了。


解压APK

首先,我们需要使用unzip解压apk。具体命令如下:

unzip test.apk -d /tmp/test

dex2jar

接下来,使用这个神器将apk中的classes.dex文件转换为jar文件。具体命令如下:

bash -x d2j-dex2jar.sh classes.dex

注意,需要给d2j-dex2jar.sh和d2j_invoke.sh两个脚本可执行权限。


jd-gui

像我的Ubuntu 13.10的64位版本使用jd-gui的时候,可能会遇到如下的错误:

./jd-gui: error while loading shared libraries:...

主要是缺少32位的库,如下安装命令可以解决这些问题:

sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

然后,直接用jd-gui打开刚才dex2jar.sh生成的classes-dex2jar.jar即可看到反编译的源码。如下图:

技术分享

但是,如上图所示,目前基本大部分市场发布的APK都会做代码混淆。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。