某猫投诉 flutter Signature 逆向
前言
直接说了是 flutter了 那就不必多说了。
先介绍下 什么是flutter。 这里我直接把AI的回复粘贴过来了。
Flutter 是谷歌开发的一套 UI 工具包,让你只写一份代码,就能同时为 iOS、Android、Web 和桌面等多个平台创建美观、高性能的应用。
1、“万物皆 Widget”: Flutter 中所有界面元素,包括按钮、文本和布局,甚至应用本身,都是“Widget”(小部件)。它们可以像积木一样组合起来构建复杂的界面。
2、自带渲染引擎(Skia): Flutter 不依赖操作系统原生的 UI 组件,而是通过自带的高性能图形引擎 Skia 直接将所有 Widget 绘制到屏幕上。这样可以实现极高的渲染速度和流畅的用户体验。
3、Dart 语言: Flutter 使用 Dart 语言开发。
- AOT 编译: 发布时,Dart 代码会被直接编译成机器码,使应用运行速度极快,性能接近原生。
- JIT 编译 + 热重载: 开发时,Dart 支持即时编译和“热重载”功能,开发者修改代码后能立即看到效果,大大提高了开发效率。
4、响应式 UI: Flutter 采用声明式 UI 编程。你只需描述界面“长什么样”,而不用关心“如何更新”,当数据变化时,Flutter 会自动高效地更新界面。
libflutter.so ===> libapp.so
那这里 AI介绍了 flutter的特点。
再补充几点
1、flutter是由Dart开发
2、 Flutter被编译出来其实就是个So文件
3、So文件无函数名。基本都是sub_开头,也无JNI绑定方法。
4、执行是由flutter.so执行
抓包
抓包可知。需要逆向的参数 是这个 signautre
这里Java层找不到
IDA配置
这里 flutter 反编译 全是一sub 函数。几万个。找不到
这里使用blutter去做一个函数名还原。
解压 app 把 libflutter.so 以及 libapp.so 拿出来。
下载完Blutter。
这里我是Mac
使用如下命令
两个版本
macOS Sequoia
- Install XCode
- Install required tools
1 |
|
macOS Ventura and Sonoma (clang 16)
- Install XCode
- Install clang 16 and required tools
1 |
|
然后执行下述命令
python3 blutter.py ./arm64 ./output
如下图位置 即可。
直接讲ida中还原变量名。
把这个py文件拖进去
中间有错误不用管。然后就发现
诶。变量名都还原了。
具体分析
这里其实我搞过web的 知道这个signature 是 sha256
这里直接搜索 sha256
当然可以把这个Allocate,以及flutter 开头的过滤掉。
这里点开第一个
直接找他函数地址 Hook一下就好了
这里直接对比。
对比
最后发现是由这段加密而成。
结果一模一样
看着唬人 实则非常简单。
具体结果
最后还需要一点小小改动。