Android的APK反编译总结

对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解压也可以,直接解压也可以,解压完了目录如下

Android的APK反编译总结_第1张图片

其中classes.dex就是我们需要的反编译的东西,将这个文件复制到dex2jar目录下

使用命令:

./d2j-dex2jar.sh classes.dex

此时很多apk会报错:如下

com.googlecode.d2j.DexException: not support version.

Android的APK反编译总结_第2张图片

具体原因,网上乱七八糟的,但是真正解决的是这个网站: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,

Android的APK反编译总结_第3张图片

然后在使用./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文件如下图:

Android的APK反编译总结_第4张图片

 

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 查看库的版本信息,如下图所示:

Android的APK反编译总结_第5张图片

readelf -a libavcodec.so 查看so的头的相关信息(参数可以使用-a -d -h,自行查看)

Android的APK反编译总结_第6张图片

nm -D libavcodec.so 查看这个库调用了那些接口等:

Android的APK反编译总结_第7张图片

objdump -d libavcodec.so 与上一命令类似,可以自行查看等等

你可能感兴趣的:(unix编程杂谈)