您的位置:首页 > 其它

华为荣耀3X root后不可写问题解决

2015-07-21 15:12 344 查看
工作中发现,华为荣耀3x在Root后,无法往/system分区中写入内容。跟踪发现是在mount后失败。而root精灵的root方案虽然可以成功root,但是root成功后,重启手机,原先写入/system分区中的内容全部消失不见。

/*

转载请注明出处:http://blog.csdn.net/jinangl_vsnake/article/details/46986081

如有交流,发送至邮箱jinangl@163.com

*/

为了解决这个问题,发现国内另一款知名root软件可以无此副作用(root后重启写入/system的内容)还在。因此逆之,找出如何实现的。

       通过逆向,提取方案,分析原理,发现此漏洞利用/dev/misc-sd设备的可写漏洞。

      正常情况下,打开设备后,调用ioctl函数,控制设备驱动程序修改其内部的一个数据结构。

       但是我们可以让设备驱动程序写的目标地址,溢出到用户空间的一块地址,可以实现对内核的任意可写。

fd = open("/dev/misc-sd", 0);

        ioctl(fd, 0, buff);//buff需要精心构造。

       既然可以对任意内核数据可写,这里提出一个root提权的方案。将可写的地址定位到系统调用表内核没有使用的项(如0x10f,0x110)。将其地址

修改为我们自己定义的回调函数void callback();。

    准备好后,调用syscall(0x10F)或syscall(0x110)可以调用我们自己的callback回调函数。

    在回调函数中,编写提权代码,可以达到提权的目的。

    写到这里,我们所关心的华为荣耀3X root后不可写问题还没有解决,哈哈,不要急,听我慢慢道来。

    定位逆向出来的root提权方案的syscall回调函数callback。发现这个函数除了提权外,还在内核特定位置,搜索"mmcb"这个字符串,如果找到,将其修改为"AAAA"。这个太像破解/system分区不可写的难题的关键点了。

    写程序验证之。yes,难题解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: