2022年1月6日

FlutterDart逆向从自信入门到精通跑路系列(3)-flutter apk 文件架构

作者 huruwo

在前面的基本开发过程中,我们得到了一个较为简单的flutter apk 文件。现在我们来将其解析分析里面包含的文件内容。

F:\flutter\bin\flutter.bat --no-color build apk
Running Gradle task 'assembleRelease'...                          114.7s
√  Built build\app\outputs\flutter-apk\app-release.apk (16.5MB).
Process finished with exit code 0

整个apk大小挺恐怖的,我们之前只写了几行代码几个类居然有16.5MB的大小。

原因是在lib里面用了三套架构,我们只保留一套即可

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.fluttertest"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName

        ndk {
            abiFilters "armeabi-v7a" //架构保留
        }

    }
F:\flutter\bin\flutter.bat --no-color build apk

 Building with sound null safety 

Running Gradle task 'assembleRelease'...                            5.4s
√  Built build\app\outputs\flutter-apk\app-release.apk (5.4MB).
Process finished with exit code 0

这下我们的apk只有5.4M

关于flutter的部分在

lib asset 两个文件夹里面,asset存放的就是相关的资源文件而lib里面就存放了我们要破解的flutter的代码。

  • libflutter.so 完整的flutter虚拟机

  • libapp.so flutter程序代码对应的dart vm AOT 快照文件