当我们遇到一个很炫的App,都会想去模仿实现。但通常App都会经过混淆才发布的,所以我们需要反编译。
工具
- dex2jar:将dex转换成jar的工具
- 最新的下载地址:dex2jar地址
- jdgui : 将编译好的jar可视化
- apktool : 反编译出apk中的资源文件
- 最新下载地址:apktool地址
我在Github上传了这些工具,也可以来我的Github下载
dex2jar使用
目的:反编译得到Java文件
- 直接解压要反编译的Apk文件,得到
classes.dex
- 将
classes.dex
拷贝到 dex2jar-2.0文件夹里面 - 在dex2jar-2.0文件夹里面执行命令行(shift+右键 -> 在此处打开命令窗口) , 执行:
d2j-dex2jar.bat classes.dex
- 然后就得到了
classes_dex2jar.jar
- 使用
jd-gui.exe
打开classes_dex2jar.jar
就可以看到java文件啦!!
apktool使用
目的: 反编译得到资源文件
- 直接把要反编译的apk放到apktool文件夹里面
- 在apktool文件夹里面执行命令行(shift+右键 -> 在此处打开命令窗口) , 执行:
apktool d test.apk
, 然后就会生成test文件夹 - 然后继续执行
apktool b test
重新构建apk - 然后就得到我们需要的资源文件啦
过程如下:
$ apktool d test.apk
I: Using Apktool 2.2.2 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.2.2 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
如果有用,记得点个赞鼓励一下哈