flutter逆向 ACTF native app

WriteUp 6个月前 admin
110 0 0
还原函数名


flutter逆向的一大难点就是不知道libapp.so的函数名,虽然有工具reflutter可以帮助我们得到其中的符号,但是我个人认为基于对libflutter.so源码插桩后重编译再重打包apk的方式具有极大的不可预料性,极有可能导致apk闪退,这一题便出现了这种情况,所以接下来我将介绍的工具blutter是纯静态分析来还原函数名,更令人惊喜的是它提供了IDApython脚本来让我们可以在IDA中对函数进行重命名,而这个项目中提供的其他文件也相当好用。


blutter的编译及使用


blutter项目地址


https://github.com/worawit/blutter


在各个平台如何编译在这个项目的README.md中写的已经相当详细了,这里我就简单介绍一下Windows上的编译过程吧,注意一下这些命令需要全程运行在代理环境否则会导致无法下载。


首先clone项目:


git clone https://github.com/worawit/blutter --depth=1


随后运行初始化脚本:


cd .blutter
python .scriptsinit_env_win.py


请注意,接下来我们需要打开x64 Native Tools Command Prompt,它可以在Visual Studio文件夹中找到。


flutter逆向 ACTF native app


然后运行blutter.py并提供libapp.solibflutter.so的文件夹路径以及输出文件夹路径。


python .blutter.py ..challlibarm64-v8a .output


flutter逆向 ACTF native app


输出文件夹目录如下:


flutter逆向 ACTF native app


随后我们用ida反编译libapp.so,并运行输出文件夹中的IDApython脚本ida_script/addNames.py,符号就被全部恢复出来啦。


flutter逆向 ACTF native app


hook关键函数 获取函数参数


这里我们需要关注的函数是flutter_application_1_main__LongPressDemoState::_onTap,因为在flutter的开发中,onTap函数是按钮点击之后的响应函数。


flutter逆向 ACTF native app


随后我们进入sub_1DE500,在该函数中双击sub_1DE59C进入。


flutter逆向 ACTF native app


在这个函数中我们发现了256,%,^这些特征,合理猜测一下算法可能是RC4。


flutter逆向 ACTF native app

flutter逆向 ACTF native app

flutter逆向 ACTF native app


接下来我们使用输出文件夹中的blutter_frida.jshook一下sub_1DE59C看看情况。


flutter逆向 ACTF native app


PS D:hgameACTFnative appworkblutter> frida -U -f "com.example.flutter_application_1" -l .outputblutter_frida.js
[Pixel 3::com.example.flutter_application_1 ]->
Unhandle class id: 46, TypeArguments
GrowableList@6d00488c29 = [
188676,
0,
{
"key": "Unhandle class id: 46, TypeArguments"
},
34,
{
"key": [
184,
132,
137,
215,
146,
65,
86,
157,
123,
100,
179,
131,
112,
170,
97,
210,
163,
179,
17,
171,
245,
30,
194,
144,
37,
41,
235,
121,
146,
210,
174,
92,
204,
22
]
},
0,
0,
0
]


这里我们只hook到一个数组的值,另一个数组的类型是TypeArguments,研究了一下blutter_frida.js后发现作者还没有对这种数据类型格式提供hook支持。


flutter逆向 ACTF native app


IDA动态调试libapp.so


现在我们得到了一个数组,我们就暂时认为它就是flag经过加密之后得到的结果,接下来我们在IDA中对sub_1DE59C下断点动态调试来更加深入的研究一下。


首先我们需要将IDA文件夹中的dbgsrv/android_server64push到手机上面,然后运行一下并且指定端口。


blueline:/data/local/tmp # ./as64 -p 11112
IDA Android 64-bit remote debug server(ST) v7.7.27. Hex-Rays (c) 2004-2022
Listening on 0.0.0.0:11112...


随后端口转发一下。


PS C:Usersoacia> adb forward tcp:11112 tcp:11112
11112


在IDA中选择调试器为Android debugger。


flutter逆向 ACTF native app


随后点击Debugger->Debugger options...选择如下配置:


flutter逆向 ACTF native app


点击Debugger->Process options...,Hostname修改为127.0.0.1,Port修改为11112。


flutter逆向 ACTF native app


然后点击Debugger->Attach to process...,附加到我们目标包名的进程上面。


flutter逆向 ACTF native app


弹出该弹窗选择Same即可。


flutter逆向 ACTF native app


在手机上点击按钮,然后在IDA中点击这个绿色的剪头,就可以动态调试啦。


flutter逆向 ACTF native app


flutter逆向 ACTF native app


在动态调试之后,未知的变量也逐渐浮现了出来,这里我们发现了v28>=256,那么很有可能就是RC4了哦。


flutter逆向 ACTF native app


既然这样,那么直接在这里唯一的异或的地方用IDA去trace一下,把异或的数组dump下来不就行了。


flutter逆向 ACTF native app


于是我们得到了被异或的数组了。


flutter逆向 ACTF native app


但是在异或运算的地方下断点之后,我输入的数全都是1,这里被异或的数也全是0xce。


flutter逆向 ACTF native app


所以莫非不是RC4?让0xce和0x31异或一下看看,竟然是0xff这么有意义的数字。


flutter逆向 ACTF native app


所以exp也就能写出来啦。


final = [184, 132, 137, 215, 146, 65, 86, 157, 123, 100, 179, 131, 112, 170, 97, 210, 163, 179, 17, 171, 245, 30, 194,
144, 37, 41, 235, 121, 146, 210, 174, 92, 204, 22]
xor = [14, 14, 68, 80, 29, 201, 241, 46, 197, 208, 123, 79, 187, 55, 234, 104, 40, 117, 133, 12, 67, 137, 91, 31, 136,
177, 64, 234, 24, 27, 26, 214, 122, 217]

flag = [chr(xor[i]^final[i]^0xff) for i in range(len(final))]
print(''.join(flag))
# Iu2xpwXLAK734btEt9kXIhfpRgTlu6KuI0




flutter逆向 ACTF native app


看雪ID:oacia

https://bbs.kanxue.com/user-home-963320.htm

*本文为看雪论坛优秀文章,由 oacia 原创,转载请注明来自看雪社区

flutter逆向 ACTF native app

# 往期推荐

1、IOFILE exploit入门

2、入门编译原理之前端体验

3、如何用纯猜的方式逆向喜马拉雅xm文件加密(wasm部分)

4、反恶意软件扫描接口(AMSI)如何帮助您防御恶意软件

5、sRDI — Shellcode反射式DLL注入技术

6、对APP的检测以及参数计算分析


flutter逆向 ACTF native app


flutter逆向 ACTF native app

球分享

flutter逆向 ACTF native app

球点赞

flutter逆向 ACTF native app

球在看

原文始发于微信公众号(看雪学苑):flutter逆向 ACTF native app

版权声明:admin 发表于 2023年11月8日 下午6:00。
转载请注明:flutter逆向 ACTF native app | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...