对APK 进行反编译所使用导的工如下:
apktool :https://ibotpeaches.github.io/Apktool/ 和 https://ibotpeaches.github.io/Apktool/install/ APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能
dex2jar:https://sourceforge.net/projects/dex2jar/ 反编译hex文件为jar
jd-gui:https://linux.softpedia.com/get/Programming/Disassemblers/JD-GUI-102186.shtml 查看反编译出来的jar
IDA PRO:https://www.hex-rays.com/products/ida/support/download.shtml 翻遍动态库
1。apktool
这个网上很多,也不是重点,所就不解少了。我给出的网站有很好的例子,其安装过程也在器观望上
2 。dex2jar
在linux将test.apk 解压出来,后缀改成test.zip解压也可以,直接解压也可以,解压完了目录如下
其中classes.dex就是我们需要的反编译的东西,将这个文件复制到dex2jar目录下
使用命令:
./d2j-dex2jar.sh classes.dex
此时很多apk会报错:如下
com.googlecode.d2j.DexException: not support version.
具体原因,网上乱七八糟的,但是真正解决的是这个网站:https://blog.csdn.net/lonewolf521125/article/details/89095783
在此粘贴一下:dex2jar 的版本与要解析的 dex 文件的版本不匹配造成的,
关于 dex 文件的版本号
009
M3 releases of the Android platform (November–December 2007)
013
M5 releases of the Android platform (February–March 2008)
035:
android 7.0 之前
037
android 7.0 正式版开始使用到 android 8.0 release 版
038
android 8.0 release 版
我采用的是第二种方案,直接修改:
vim -b classes.dex 将开头的038,修改成035,
然后在使用./d2j-dex2jar.sh classes.dex,此时就生成了jar文件:classes-dex2jar.jar
3 。jd-gui
将上面生成的classes-dex2jar.jarcopy出来后,可以放到和jd-gui统计的目录下;
安装jd-gui依赖库,不然会报错:./jd-gui: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6
./jd-gui classes-dex2jar.jar 查看jar文件如下图:
4 。apk的native库so的查看
A。有一个软解IDA PRO可以很好的使用,目前我没有使用,在此记录一下:
安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件:https://blog.csdn.net/pengyan0812/article/details/43988171
B。其他工具
strings libavcodec.so | grep version 查看库的版本信息,如下图所示:
readelf -a libavcodec.so 查看so的头的相关信息(参数可以使用-a -d -h,自行查看)
nm -D libavcodec.so 查看这个库调用了那些接口等:
objdump -d libavcodec.so 与上一命令类似,可以自行查看等等