reflutter工具实践之--xx一番赏app

此文章已经录制b站视频:

flutter逆向案例-某某一番赏_哔哩哔哩_bilibili

一、工具介绍--reFlutter

这个框架帮助 Flutter 应用逆向工程,使用 Flutter 库的补丁版本,该版本已经编译并准备好重新打包应用。此库修改了快照反序列化过程,允许您以方便的方式执行动态分析。

项目地址:ptswarm/reFlutter:Flutter 逆向工程框架 (github.com)

二、使用方式

这个其实在github项目里面有明确的使用介绍。我简单说一下步骤。以我们的某app为例。

这个里面有个sign的值,我们需要去进行处理,后来把apk后缀改成zip后 发现是个 flutter app

使用工具逆向他 这里需要挂梯子 我使用的是小猫clash 各位根据自己的代理设置即可

复制代码
pip3 install reflutter
​
D:\Android_tools\Flutter>set HTTPS_PROXY=http://127.0.0.1:7890
D:\Android_tools\Flutter>set HTTP_PROXY=http://127.0.0.1:7890
D:\Android_tools\Flutter>reflutter ru.apk

具体操作如下:

这样会生成一个

生成的 apk 必须对齐和签名 我们根据 reflutter作者给出的方式签名:

地址:Release v1.2.1 · patrickfav/uber-apk-signer (github.com)

进行签名:

复制代码
java -jar uber-apk-signer-1.2.1.jar --allowResign -a release.RE.apk

会出现:

安装这个apk安装好之后 在/data/data/

三、分析dump.dart

先用adb导出dump.dart 用vscode打开:

复制代码
D:\Android_tools\Flutter>adb pull /sdcard/Download/dump.dart
/sdcard/Download/dump.dart: 1 file pulled, 0 skipped. 113.4 MB/s (5300482 bytes in 0.045s)
​
D:\Android_tools\Flutter>

结合 上面的sign值是32位加密 我们猜测 是md5,所以我们在dump.dart中进行搜索(MD5等模糊词):

发现有个encodeMd5

那么去hook 偏移地址了。

复制代码
 //先去枚举导出
 var exports = Module.enumerateExports("libapp.so");
for(let i = 0; i < exports.length; i++){
   console.log(exports[i].name + " " + exports[i].address);
 }

hook encodeMd5偏移地址:

复制代码
var addr =  Module.findExportByName("libapp.so", "_kDartIsolateSnapshotInstructions");
​
console.log(addr); //0xb696387d
var funcAddr = addr.add(0x16beb8);
​
console.log(funcAddr); //0xb6980000
//
Interceptor.attach(funcAddr,{
    onEnter:function (args){
        this.x1 = args[1];
        console.log('args0:',hexdump(args[0]))
        console.log('args1:',args[1])
        console.log('args2:',hexdump(args[2]))
​
    },
    onLeave:function(retval) {
        console.log("--------------------")
        // console.log(Memory.readCString(this.x1));
        // console.log(Memory.readCString(retval));
        console.log('返回值:',hexdump(retval))
    }
​
})

hook结果:

四、验证结果

完结撒花!

相关推荐
我命由我123452 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
小白勇闯网安圈2 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
从零开始学习人工智能2 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
卷无止境4 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha13144 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教4 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
Python私教5 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
卷无止境5 小时前
FastAPI 的Admin面板生态
后端·python
ctlover5 小时前
Streamlit 框架
python
ι:6 小时前
MATLAB 与 Python 搭建无人机地面站:优势、劣势与选型逻辑
python·matlab·无人机