worawit / blutter

Flutter Mobile Application Reverse Engineering Tool
MIT License
760 stars 128 forks source link

Implementation principle of blutter? #16

Closed BrilliantFish closed 5 months ago

BrilliantFish commented 8 months ago

I'm curious about the implementation principle of blutter.

  1. Are there any fatal flaws?
  2. Will it be impossible to reverse because of the Flutter version?
  3. Every time Flutter launches a new version, does it need to be re-developed and followed up? There used to be a dart reverse engineering tool, but later developers stopped maintaining it and could only stay at a certain version of reverse engineering.

Very much looking forward to your answer.

worawit commented 7 months ago
  1. I started developing this tool just for getting symbol names. So I don't know too.
  2. Flutter versions only make it more difficult to reverse a flutter app. For each release, the Dart snapshot format might be changed without backward compatible. If you cannot read information from snapshot, you can still read all assembly but take times. It is similar to reversing app without symbols but worse.
  3. A new Dart version normally means new features. So the tool must be updated. The key challenge here is how much effort must be used to follow up a new Dart version. I guess you mentioned the tools that writing code fro reading Dart snapshot. This approach is unlikely to work for all Dart version because the format might be changed without backward compatible.
BrilliantFish commented 7 months ago
  1. How should we participate in contributing code to this project?
  2. Will there be an article later on explaining the implementation principles and details of this project to help others contribute to its continuous growth?

Very much looking forward to your answer.

BrilliantFish commented 5 months ago

@worawit

worawit commented 5 months ago
  1. Just do a pull request
  2. Maybe not. The project just compiles Dart runtime, then uses it to extract information. You have to know Dart internal APIs which is huge and have no documentation.