代码改变世界

Android反编绎

2013-06-22 12:32  wiikii#  阅读(446)  评论(0编辑  收藏  举报

在Android开发过程中,总免不了碰到各种各样的问题,我们想参考其他人的想法,最好的方法莫过于直接看代码。所以我们需要对其它APK进行反编绎得到我们想要的资源,代码文件。虽然大部分应用都是经过混淆或者其它安全处理,但总比没有的好。

现在我们开始吧!

 

 

一:APK资源反编绎

  • 工具准备

使用到的工具有: apktool

下载地址: http://code.google.com/p/android-apktool/

将下载好的文件解压后放到同一个文件夹下面:

  • 对应ROM的Framework资源支持(我们以三星S4机器为示例)

命令:adb pull system/framework SecFramework

该命令可以将Framework中的系统资源及相关类库都拿下来放到SecFramework文件夹中。

  • 将SecFramework中的系统资源APK文件提取出来(一般是framework-res.apk,三星S4里面加了另一个twframework-res.apk)

命令:

apktool if framework-res.apk

apktool if twframework-res.apk

  • 反编绎资源(这里我们以三星的联系人(SecContacts.apk)为例)

命令:apktool d SecContacts.apk SC     (SC表示你需要将反编绎后的资源所放的文件夹名)

  • 到这一步,资源反编绎就成功啦,我们可以查看SC目录下相关的联系人资源文件啦。

 

二:DEX反编绎

  • 工具准备

使用到的工具有:dex2jar, jd-gui

dex2jar下载地址:http://code.google.com/p/dex2jar/

jd-gui下载地址:http://java.decompiler.free.fr/?q=jdgui

  • 提取APK中的classes.dex文件(这里我们以 CyanogenMod File Manager应用为例)

将APK改后缀名为ZIP,并解压。

提取其中的classes.dex文件。

  • 解压下载的dex2jar..运行命令:  dex2jar.sh CMFileManager/classes.dex

这时会在CMFileManager文件夹下面成一个classes_dex2jar.jar文件。

  • 使用JD-GUI工具直接打开该JAR文件即可。

 

三:ODEX反编绎

  • 工具准备

使用到的工具有:smail

工具下载地址: http://code.google.com/p/smali/

  • ODEX反编绎原理:首先将ODEX文件转换成DEX文件,DEX文件可以根据上面所述方法转换成JAR文件,然后就可以使用JD-GUI查看了。
  • ODEX转换成DEX需要Framework类库支持(这里同样以三星的SecContacts.odex为例)。
    所以我们可以将SecContacts.odex直接放到我们先前PULL出来的SecFramework文件平下面。
    同样将上面下载的四个文件也一并放进去。
    命令:java -jar ./baksmali-1.4.2.jar -x SecContacts.odex
    这时会在当前目录下生成一个out文件夹。
    使用命令:java -jar ./smali-1.4.2.jar out/ -o SecContacts.dex
    这时ODEX转换成DEX文件就成功了。 
  • 接下来就执行相关命令转换成JAR文件。

  • 使用JD-GUI工具查看即可

    

 

大功告成。