美文网首页
Android APK 反编译

Android APK 反编译

作者: 行走中的3卡 | 来源:发表于2022-09-29 16:30 被阅读0次

    终极目标就是如何获取APK的DEX 文件 .
    因为Android 项目编译成可执行.dex文件, 然后再打包成apk.
    而这过程种,会对Apk 进行加固,使得我们解压apk 的dex文件是加密过的,无法直接看到源码。

    因此,需要对Dex 加载原理 和 DexFile 结构熟悉,
    才能理解反编译的原理

    1.Android Dex加载原理

    先看下两个类, 路径是:/libcore/dalvik/src/main/java/dalvik/system/

    package dalvik.system;
    public class BaseDexClassLoader extends ClassLoader {
    
    package dalvik.system;
    public class PathClassLoader extends BaseDexClassLoader {
    

    需要先了解 Dex 文件如何加载进内存
    PathClassloader -> BaseDexClassLoader-> DexPathList
    DexPathList里面通过 makeDexElements 获得Element[]
    Element[]是通过 loadDexFile返回的dalvik.system.DexFile对象创建的
    dalvik.system.DexFile最终通过openDexFileNative返回mCookie

    获取mCookie的线路
    先获取PathClassloader中的DexPathList对象
    再获取DexPathList中的dexElements,也就是Element[]
    再获取每个Element中的dexFile对象
    再获取dexFile中的mCookie值

    2.Android DexFile结构

    --待续

    参考:
    https://blog.niunaijun.top/index.php/archives/13.html
    http://aosp.opersys.com/xref/android-12.0.0_r2/xref/libcore/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java

    相关文章

      网友评论

          本文标题:Android APK 反编译

          本文链接:https://www.haomeiwen.com/subject/tzjkartx.html