Mac系统下对Android apk进行反编译

来源:互联网 发布:科比知乎 编辑:程序博客网 时间:2024/05/17 04:40

   最近有一个同事需要去实现android某个功能,自己实现起来感觉到很困难,就看到别人软件实现了此功能。就反编译学了人家的实现方法,让我一下感慨万千,那以后学习和开发项目将方便很多。结合mac系统整理一下反编译android apk的过程。

 一 测试环境  Mac osx 10.8.3   macbook pro

 二   所需软件

      apktool ,主要将apk中的xml文件、图片、语言资源文件等反编译成原状态。

      dex2jar,主要将apk反编译成jar包文件。

     jdgui,把jar包文件转化成可读写的.java 源文件。

三、配置MAC下的环境变量

   为了使软件能在终端命令行下面直接运行,就需要配置他们的环境变量,mac环境变量配置如下:

    1、打开终端 2、输入 cd ~   进入~文件夹 3、输入 touch .bash_profile 回车 4、输入open -e .bash_profile 在TextEdit中打开这个文件

     图 1 进入配置文件操作

     5、设置环境变量语句:export PATH=${PATH}:/XXX/ ,XXX是你执行程序所在的路径。6、最后保存退出终端就行。
 图2 简单设置图

四、反编译过程

1、apktool 可以用来反编译apk文件,解析出可读的xml文件,同时还可以用来修改xml中的文件进行汉化。下载apktool后通常有:aapt.exeapktool.batapktool.jar 三个文件,假设我的apk文件位于/Users/house/Downloads/eoecn.apk下 ,输入以下命令:apktool  d    /Users/house/Downloads/eoecn.apk   /Users/house/Downloads/test/,如下图

反编译后的效果


2、上面只是把xml源文件转换为可读,源代码文件位于smali文件夹下,所有原文件以smli文件后缀,还不是我们可读的文件。下面要用   dex2jar把apk文件反编译成jar文件,假设我的apk文件解压缩后的dex文件位于/Users/house/Downloads/eoecn/classes.dex下 ,输入以下命令:d2j-dex2jar.sh   /Users/house/Downloads/eoecn/classes.dex  /Users/house/Downloads/ 



这样就把dex文件解压成相应的jar文件

3、打开  jdgui程序,打开上面生成的jar包classes-dex2jar.jar,即可看到源代码了

    

java decompliler 这个工具非常强大不经支持多操作系统,还提供eclipse插件以及intellij插件,通过IDE工具直接查看class文件中 的源代码。

以上是apk 反编译的过程,这些小工具所提供的功能并不紧紧这些,还有非常强大的诸如文件签名,jar包验证等功能。