安卓逆向工具笔记

1,421 阅读2分钟

一. 常见工具

  1. apk-tool

    获取资源文件,主要是提取图片文件、布局文件等; 可以把反编译后的资源文件重新打包成二进制的apk/jar文件

    # 提取apk中的资源文件
    apktool d wechat.apk
    
    # 将反编译后的资源文件重新打包成apk或jar
    apktool b wechat
    
  2. jd-gui

    查看把apk中classes.dex转化的jar文件中的源码,实际就是将jar文件里的.class文件转成.java文件,github.com/java-decomp…

  3. dex2jar

    将apk反编译成java源码(classes.dex转化成jar文件),github.com/pxb1988/dex…

  4. jadx

    用于从Android Dex和Apk文件生成Java源代码的命令行和GUI工具, github.com/skylot/jadx

    • 从APK,dex,aar,aab和zip文件将Dalvik字节码反编译为Java类
    • 从resources.arsc解码AndroidManifest.xml和其他资源
    • 还原一些简单的混淆

Dalvik字节码

Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化。虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事。Dalvik VM是基于寄存器的,而JVM是基于栈的;Dalvik有专属的文件执行格式dex(dalvik executable),而JVM则执行的是java字节码。Dalvik VM比JVM速度更快,占用空间更少。

  1. FDex2脱壳工具

    大部分apk都用了第三方的加壳保护,在原有dex文件基础上,放上了一个壳文件,这个会先于本身文件运行,防止逆向、动态调试等,所以遇到这种,就需要进行脱壳,找到真正需要的dex;

二. 使用说明

  1. apktool

    apktool主要是提取资源文件及把反编译后的资源文件重新打包

  2. dex2jar和jd-gui

    一般使用jd-gui、dex2jar对apk反编译,一般的步骤为

    a. 把目标apk文件转为.rar后缀的文件,比如 wechat.apk 转为 wechat.rar

    b. 解压.rar文件,在解压后的目录里有两个文件,classes.dex,这是接下来反编译要用到的

    c. cd到dex2jar 目录下,把上面的dex文件copy进来,然后执行d2j-dex2jar.bat(d2j-dex2jar.sh) classes.dex

    d. 执行完后会在同目录下生成两个jar文件 classes-dex2jar.jar ,接下来就是要查看这两个jar里的源码了,用jd-gui来浏览

    e. 打开jd-gui,然后把生成的jar文件拖到里边,会生成源码树,当然,源码基本都是混淆过的,方法名和类名比较反人类,要仔细看了

  3. jadx 这个相当于上面的apktool(查看资源文件)+dex2jar+jd-gui,使用比较简单,安装后可以直接打开apk文件查看源码

【参考】

  1. wossoneri.github.io/2019/09/12/…][Security]Decompile-smali/
  2. crifan.github.io/android_app…
  3. blog.csdn.net/qq_39551311…