大家使用 flutter 的大部分原因应该是跨平台,但是我认为 flutter 还有一个大的优点就是安全性。
根据本人分析 relese 版本(debug 版本比较简单,自带源码)的 apk 文件
单是还原出具体的类文件都难以做到,而且由于 dart vm 的存在,等于自带 apk VMP 。
这让什么 hook 动态调试甚至抓包都有点难以做到。(当然我不是说 flutter 不能分析,只是没有现成的通用工具去分析,如果硬要看只能人肉汇编器了。)
为了提高安全性我们可以自行编译 flutter 引擎做到
- 去掉魔数,避免别人知道你的编译版本
- 更换类文件 数据 function code 的解析顺序,让别人无法通过通用引擎源码反解析你的工程
- 混淆掉快照数据和快照文件的导出函数名字
- 添加 ollvm 等技术让工程变得更加花里胡哨难以反编译
因为发现相当一部分黑灰黄软件已经使用上了这种技术,导致我们日常的安全工作有点难以开展。反过来说,如果你们想保护自己的工程源码,可以选择 flutter 这项技术。