-
-
[原创]利用Xposed对ollvm后的so中flag爆破
-
发表于:
2020-11-9 20:18
9681
-
[原创]利用Xposed对ollvm后的so中flag爆破
题目来源:
样本来自看雪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编辑
,原因: 添加样本