Android apk反编译
使用工具:JD-GUI、dex2jar、apktool
JD-GUI:
http://jd.benow.ca/ JD即JavaDecompiler的缩写
http://java.decompiler.free.fr(这是官网, 但是目前貌似已经不提供了)
独立的图形工具,用于显示.class文件的java源代码,可以把.class和.jar文件保存成.java文件
- 解压,得到一个jd-gui.exe文件
- 双击运行jd-gui.exe文件就行,然后可以把.class文件和.jar文件直接拖进去就可以查看源码了
- 文件可以保存,file – sava /sava all sources 保存到你想要的目录就可以了。 保存之后就是你想要的.java文件了
- 解压,得到一个jd-gui.exe文件
dex2jar:
http://sourceforge.net/projects/dex2jar/files/
可以把Android APK中的classes.dex解码为jar文件, 可以直接将apk文件解压为jar文件
1. 解压下载下来的文件到某一目录下,
如“C:…\Desktop\Decompilation\dex2jar-2.0”
2. 将要反编译的apk放入到该解压的目录中:
3. 使用cmd命令,跳到该目录下:
4. 使用命令:d2j-dex2jar (“apk的名字”).apk
a) (我的版本是“dex2jar-2.0”, 我记得0.0.9系列的版本是使用dex2jar app_name.apk,但这次我也试了,不行,你看解压的文件中的bat文件的名字是什么,那就用什么运行就可以)
b) 命令运行之后,会多出来一个appName-dex2jar.jar文件,你用JD-GUI打开就行
apktool:
http://ibotpeaches.github.io/Apktool/
android-apktool可以把AndroidManifest.xml文件和res目录下的xml文件和NinePatch图片反编译到接近原始状态,反编译后还可以重新编译回去
- Apktool 2.x (1.5.2以后的版本) 要安装Java 1.7 或以上的版本
Apktool 1.x (1.5.2之前的版本) 要安装Java 1.6或以上的版本
- Apktool 2.x (1.5.2以后的版本) 要安装Java 1.7 或以上的版本
写一个windows包装器脚本,保存为apktool.bat(将下面代码保存成apktool.bat文件就行了)
@echo off
if “%PATH_BASE%” == “” set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en “%~dp0\apktool.jar” %1 %2 %3 %4 %5 %6 %7 %8 %9将下载下来的apktool_***.jar文件名称改为成为apktool.jar
- apktool.jar和apktool.bat文件要放在同一目录下,用cmd命令在该目录下运行 “apktool d -f -m -s apk_name.apk”就在该目录下产生一个和该apk文件同名的文件夹,现在我们就可以去查看AndroidManifest.xml、布局文件和.9图片等资源文件了。当然了,并不是所有的应用都可以这样查看,有的公司在Android系统中添加了自己的框架文件和应用就这样解析不出来。