【问题标题】:Flutter debug Apk decompile to get the source codeFlutter debug Apk反编译获取源码
【发布时间】:2019-05-09 00:58:12
【问题描述】:

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

【问题讨论】:

  • flutter应用源码是dart语言的,java反编译器可以反编译其他语言代码吗?
  • 试试看告诉我们
  • 当然,顺便说一句,我使用easeus恢复了我的项目,现在它运行良好。感谢您的关心。
  • @F-1 我试过反编译apk,但没有得到我的飞镖代码。

标签: flutter decompiler


【解决方案1】:

如果您的 debug.apk 处于调试模式,那么您可以使用 apktool 来提取 apk 的组件(我使用的是提取这个词,因为 apk 是一个 zip 文件)。

Flutter 在调试模式下将源代码(使用 cmets!)保存在文件 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文件,这不是一个原始的arm程序集,只是使用Flutter引擎在运行。你可以阅读更多关于它here

【讨论】:

  • 在 vscode 或使用 sed 时更好地搜索文件名、类名或一些正则表达式,如 runApp\(.*\(\)\);。因为文件会很大,例如:25MB 和470850 行。
  • 请问我如何在windows上执行这个操作。 Windows 似乎找不到命令“字符串”。谢谢
  • 嘿,你可以为你的Windows机器[docs.microsoft.com/en-us/sysinternals/downloads/…strings)
猜你喜欢
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2020-09-02
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
相关资源
最近更新 更多