首页
论坛
课程
招聘
[原创]利用Xposed对ollvm后的so中flag爆破
2020-11-9 20:18 6305

[原创]利用Xposed对ollvm后的so中flag爆破

2020-11-9 20:18
6305

题目来源:

样本来自看雪2W班7月第二题

 

题目要求:

请编写Xposed插件完对该app的flag的暴破(已知so中test函数参数为一个字符串,该字符串长度为3且仅包含大小写字母)。

 

解题思路:

首先分析ollvm控制流混淆的so找到关键函数,然后分析Android8.1源码加载so的函数并编写Xposed插件hook之,最后基于sandhook框架编写爆破so。

 

考察知识点:

ollvm控制流混淆代码的分析方法,以及利用Xposed对so中函数的主动调用。

 

解题过程:

1.分析ollvm控制流混淆的so找到关键函数


  首先利用Jadx软件打开apk,核心代码如下,将用户输入字符串作为参数调用jni函数jnitest进行判断。

   然后将libnative-lib.so拉入IDA进行分析,Java_com_kanxue_test2_MainActivity_jnitest函数中有多个嵌套while循环,仔细分析,类似状态机,这就是ollvm控制流混淆。jnitest函数会先调用下图line98行的sub_103C0函数,将sub_103C0转换后的字符串地址作为参数调用test函数,test的返回结果为非0,则jnitest的结果也为非0。另外针对ollvm控制流混淆分析还有一个小技巧,就是从后往前分析,会更快找到关键函数。

根据题目要求,已知so中test函数参数为一个字符串,该字符串长度为3且仅包含大小写字母,所以我们可以采用暴力破解的方法,枚举所有符合条件的字符串,使得test函数返回非0。

 

2.分析Android8.1源码找到加载so函数并编写Xposed插件hook之


我们需要在APK调用加载so时进行hook,所以我们hook住System类的loadLibrary就行。因为我手机是Pixel+Android8.1+Edxposed,所以查看Android8.1源码,如下所示,由于这个函数内部会修改classloader,所以我们去hook这两个函数的内部调用的Runtime类中的loadLibrary0函数。这里需要注意不同Android版本,调用的Runtime类中的函数名和参数顺序是不同的。

 

  下面编写Xposed插件去hook住Runtime类中的loadLibrary0函数,核心xposed代码如下所示,在样本apk加载so后,加载自定义的hookso.so动态库,然后在自定义的so中实现对test函数的爆破。

 

 

3.基于sandhook框架编写爆破so


我们选择sandhook框架,理由是它可以hook住arm32或者arm64下的so中函数。首先我们在IDA中查找下test函数的偏移地址如下,为0XF9A0。

 

 

  然后编写主动调用test的代码,核心代码如下。

因为sandhook框架会用到init函数,需要保证sandhook模块初始化完才能进行hook,所以上面的代码封装的函数,需要在JNI_OnLoad中调用。


最后将生成的so文件拷贝到pixel手机/data/data/com.kanxue.test2/files路径下,并关闭selinux进行爆破,最终得到flag为“XuE”。

   



[2022夏季班]《安卓高级研修班(网课)》月薪三万班招生中~

最后于 2020-11-9 20:21 被PTRer编辑 ,原因: 添加样本
上传的附件:
收藏
点赞1
打赏
分享
最新回复 (6)
雪    币: 6768
活跃值: 活跃值 (2852)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
v0id_ 活跃值 2020-11-9 20:48
2
0
学习了
雪    币: 9997
活跃值: 活跃值 (4623)
能力值: ( LV11,RANK:198 )
在线值:
发帖
回帖
粉丝
neilwu 活跃值 1 2020-11-10 10:16
3
0
用frida不是更方便些
雪    币: 176
活跃值: 活跃值 (348)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
anywhere杨 活跃值 2020-11-10 10:58
4
0
软广告。。。
雪    币: 27
活跃值: 活跃值 (703)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 活跃值 2020-11-10 11:15
5
0
软广告。。。
雪    币: 105
活跃值: 活跃值 (264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
雅鸦歌 活跃值 2020-11-10 13:40
6
0
软广告+小白文,,,
雪    币: 518
活跃值: 活跃值 (2333)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2020-11-11 15:07
7
0
楼上太真实了 哈哈
但是这个是看雪自己的广告你有啥办法吗
难道看雪会自己删自己的广告吗
游客
登录 | 注册 方可回帖
返回