一尘不染

Flutter调试Apk反编译以获得源代码

flutter

由于驱动器损坏,我丢失了flutter应用程序的源代码,但是debug.apk我的Android手机中装有我的源代码。谁能告诉我如何对Flutter
apk进行反编译以获取源代码。我尝试使用反编译器对其进行反编译,但是由于flutter源代码是dart语言,因此它没有提供我的源代码。


阅读 3949

收藏
2020-08-13

共1个答案

一尘不染

如果您的debug.apk处于调试模式,则可以使用apktool来提取的组件apk(由于使用的apk是zip文件,因此我正在使用单词提取)。

Flutter在调试模式下将源代码(带有注释!)保留在文件kernel_blob.bin中。因此,使用以下命令应该可以帮助您将代码提取到文件中:

strings /path/to/extracted/apk/assets/flutter_assets/kernel_blob.bin > extracted_code.dart

注意 -您需要清除无关/垃圾字符串中的’extracted_code.dart’。

尝试在“ extracted_code.dart”中搜索“ dart”,“ import”,“ void”等字符串以及其他关键字,这将帮助您找到代码本身。

这是我的Ubuntu的一个示例:

例

如果apk在“发布”模式下编译,由于将代码编译到isolate_snapshot_instr文件中(这不是原始的程序集),并且只能在运行时使用Flutter引擎反序列化,因此提取代码会更加困难。您可以在此处了解更多信息

2020-08-13