首页
社区
课程
招聘
[原创]利用Xposed对ollvm后的so中flag爆破
发表于: 2020-11-9 20:18 9681

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

2020-11-9 20:18
9681

题目来源:

样本来自看雪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之


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-11-9 20:21 被PTRer编辑 ,原因: 添加样本
上传的附件:
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 8437
活跃值: (5031)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
学习了
2020-11-9 20:48
0
雪    币: 10940
活跃值: (7314)
能力值: ( LV12,RANK:219 )
在线值:
发帖
回帖
粉丝
3
用frida不是更方便些
2020-11-10 10:16
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
软广告。。。
2020-11-10 10:58
0
雪    币: 17
活跃值: (891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
软广告。。。
2020-11-10 11:15
0
雪    币: 105
活跃值: (549)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
软广告+小白文,,,
2020-11-10 13:40
0
雪    币: 2141
活跃值: (4522)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上太真实了 哈哈
但是这个是看雪自己的广告你有啥办法吗
难道看雪会自己删自己的广告吗
2020-11-11 15:07
0
游客
登录 | 注册 方可回帖
返回
//