前言
一般上架的安卓apk都会做混淆和加固,如果两个都不做那么被别人反编译后就可以直接看到源码了.而混淆后,那些函数名就会变成一些如”a”,”b”,”c”之类无意义的名称,并且还会添加一些无意义的代码逻辑.从而大大提高了破解的难度,但是花点时间还是能够看懂一些逻辑的.因此为了让apk更加难以反编译,加固也很重要.加固后要想反编译则更加费时,费劲.本文仅仅是自己做个记录,所以不牵涉到对加固后的apk进行反编译.
工具
Apktool
资源反编译,获取apk里面的资源.如果你仅仅只是想获取里面的资源,可不必使用该工具,直接解压缩源apk就可以了.
note:使用Apktool处理后的和直接解压缩后的里面的文件内容还是不一样的,比如里面的AndroidManifest.xml文件,Apktool处理后的就能够读懂,否则是一些乱码.
Apktool安装
按照官网说明,下载后会得到两个文件apktool
和apktool.jar
,需要注意的是必须赋予这两个文件可执行权限.使用命令chmod +x 对应文件名
即可.最后将这两个文件拖入/usr/local/bin
文件夹中.
Apktool使用
命令:apktool d 对应apk路径
.
执行完毕后,会得到一个同名的文件夹,里面就是一些资源了.找到里面的classes.dex
文件,后面代码反编译会用到.
dex2jar
代码反编译,得到classes-dex2jar.jar
文件.
dex2jar使用
下载后会得到一个dex2jar-2.0
文件夹.这里需要用到里面的lib
,d2j_invoke.sh
,d2j-dex2jar.sh
.
将这三个文件及上面获得的classes.dex
文件拖入同一个文件夹目录.
使用命令: sh d2j-dex2jar.sh classes.dex
此时在该目录下会得到一个classes-dex2jar.jar
文件.这个文件后面会用到.
jd-gui
下载后会得到一个jd-gui-osx-1.4.0
文件夹,双击里面的JD-GUI
文件,打开后将上述classes-dex2jar.jar
文件拖入其中.就可以看到啦!
note:你的Mac必须安装了Java环境.
效果
目录:
部分代码:
1 | private void a(int paramInt, boolean paramBoolean) |