前言:进行Android应用安全评估时,反编译是极为重要的手段,常规的修改代码逻辑绕过安全判断是一项很重要的测试,其次还有硬编码问题(各种密钥)。下面我们来简单看一下Android反编译。
dex2jar反编译
工具:
dex2jar-0.0.9.15
jd-gui-0.3.6
dex2jar 是一个能操作Android的dalvik(.dex)文件格式和Java的(.class)的工具,而jd-gui是一款图像化查看jar的工具。
每一个apk文件都包含一个classes.dex文件,只需将此文件拷出apk包,使用命令:dex2jar.bat classes.dex
我们将转换后的classes_dex2jar.jar文件使用jd-gui打开,如下:
这里我们看到的就是java源码,即使存在部分代码不可读,我们也可以从中看到很多业务逻辑,便于之后的smali代码的分析。
apktool反编译
工具:
apktool2.0.2
下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.0.2.jar
环境部署:
0x00 安装java环境
apktool1.x需要java1.6
apktool2.x需要java1.7
0x01 创建apktool.bat文件
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool2.0.2.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
0x02 下载apktool.jar、aapt
0x03 将这些文件放入c:/windows下即可
<strong>注</strong>:这里我放了多个apktool的版本进windows目录,所以在bat文件中标识了版本以便于切换
decode/build命令:
decode:apktool d name.apk
build:apktool b dirname new.apk
如果出现报错,可切换几个版本的apktool进行操作,build后的apk还需要签名才能使用
常见问题
1. error: Error retrieving parent for item: No resource found that matches the given name '@android:syle/Widget.WebTextView' 我使用的是apktool2.0.2进行decode,build时报的错,于是我换成用apktool1.5.2来build就行了
2. brut.androlib.AndrolibException: Could not decode arsc file 使用apktool1.x版本报的错,直接换用apktool2.0.2就行了
3. 此外还推荐使用ApktoolGui v2.0 Final(貌似无法只用2.x版本的apktool)