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工具查看即可
大功告成。