利用Xposed对ollvm后的so中flag爆破

admin 2021年4月3日17:57:24评论75 views字数 1756阅读5分51秒阅读模式
利用Xposed对ollvm后的so中flag爆破

本文为看雪论坛文章

看雪论坛作者ID:PTRer



本文为看雪安卓高研2w班(7月班)优秀学员作品。


下面先让我们来看看学员的学习心得吧!


学员感想


本题目出自2W班7月第二题。
 

题目要求:

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

 

解题思路:

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

 

考察知识点:

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


ps. 题目附件请点击“阅读原文”下载。




解题过程



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


首先利用Jadx软件打开apk,核心代码如下,将用户输入字符串作为参数调用jni函数jnitest进行判断。
利用Xposed对ollvm后的so中flag爆破
然后将libnative-lib.so拉入IDA进行分析,Java_com_kanxue_test2_MainActivity_jnitest函数中有多个嵌套while循环,仔细分析,类似状态机,这就是ollvm控制流混淆。

jnitest函数会先调用下图line98行的sub_103C0函数,将sub_103C0转换后的字符串地址作为参数调用test函数,test的返回结果为非0,则jnitest的结果也为非0。

另外针对ollvm控制流混淆分析还有一个小技巧,就是从后往前分析,会更快找到关键函数。
利用Xposed对ollvm后的so中flag爆破
根据题目要求,已知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对ollvm后的so中flag爆破
利用Xposed对ollvm后的so中flag爆破
下面编写Xposed插件去hook住Runtime类中的loadLibrary0函数,核心xposed代码如下所示,在样本apk加载so后,加载自定义的hookso.so动态库,然后在自定义的so中实现对test函数的爆破。
利用Xposed对ollvm后的so中flag爆破
3.基于sandhook框架编写爆破so

我们选择sandhook框架,理由是它可以hook住arm32或者arm64下的so中函数。首先我们在IDA中查找下test函数的偏移地址如下,为0XF9A0。
利用Xposed对ollvm后的so中flag爆破
然后编写主动调用test的代码,核心代码如下:
利用Xposed对ollvm后的so中flag爆破
因为sandhook框架会用到init函数,需要保证sandhook模块初始化完才能进行hook,所以上面的代码封装的函数,需要在JNI_OnLoad中调用。

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



利用Xposed对ollvm后的so中flag爆破
- End -

利用Xposed对ollvm后的so中flag爆破


看雪ID:PTRer

https://bbs.pediy.com/user-home-874618.htm

  *本文由看雪论坛 PTRer 原创,转载请注明来自看雪社区。


好消息!!现在看雪《安卓高级研修班》线下班 & 网课(12月班)开始同步招生啦!以前没报上高研班的小伙伴赶快抓紧机会报名,升职加薪唾手可得!!


利用Xposed对ollvm后的so中flag爆破


推荐文章++++

利用Xposed对ollvm后的so中flag爆破

* 一个易上手的函数抽取样本还原

* 编写单机游戏连连看辅助的全过程

* frida跟踪应用中所有运行在解释模式的java函数

* Sapido多款路由器命令执行

* Largebin attack总结





利用Xposed对ollvm后的so中flag爆破
公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]



利用Xposed对ollvm后的so中flag爆破

求分享

利用Xposed对ollvm后的so中flag爆破

求点赞

利用Xposed对ollvm后的so中flag爆破

求在看


利用Xposed对ollvm后的so中flag爆破
“阅读原文一起来充电吧!

本文始发于微信公众号(看雪学院):利用Xposed对ollvm后的so中flag爆破

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日17:57:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用Xposed对ollvm后的so中flag爆破http://cn-sec.com/archives/188367.html

发表评论

匿名网友 填写信息