对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 文件的版本不匹配造成的,

  1. 使用对应版本的 dex2jar
  2. 使用二进制编辑工具修改 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 与上一命令类似,可以自行查看等等

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐