码迷,mamicode.com
首页 > 移动开发 > 详细

Android APK反编译

时间:2015-05-20 13:19:44      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:编译   android   

前言

为什么需要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都会做代码混淆。

Android APK反编译

标签:编译   android   

原文地址:http://blog.csdn.net/wzy_1988/article/details/45852809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!