Android Root方法原理解析及Hook(四) GingerBreak
2012-02-23 17:18
411 查看
和zergRush的攻击原理是一样的,其实zergRush的code部分源于GingerBreak,都是先使vold进程崩溃,从logcat拿到调试信息,然后让vold进程以root权限执行恶意的shellcode(boomsh),
利用了android的/system/vold/DirectVolume.cpp中handlePartitionAdded()函数的漏洞
Android fixed patch and my hook code:
利用了android的/system/vold/DirectVolume.cpp中handlePartitionAdded()函数的漏洞
void DirectVolume::handlePartitionAdded(const char *devpath, NetlinkEvent *evt) { int major = atoi(evt->findParam("MAJOR")); int minor = atoi(evt->findParam("MINOR")); int part_num; const char *tmp = evt->findParam("PARTN"); if (tmp) { part_num = atoi(tmp); } else { SLOGW("Kernel block uevent missing 'PARTN'"); part_num = 1; } + if (part_num > mDiskNumParts) { mDiskNumParts = part_num; } ... if (part_num > MAX_PARTITIONS) { //攻击点,如果part_num小于1 SLOGE("Dv:partAdd: ignoring part_num = %d (max: %d)\n", part_num, MAX_PARTITIONS); } else { mPartMinors[part_num -1] = minor; } --mPendingPartsCount; … }
Android fixed patch and my hook code:
#include <cutils/log.h> #define LOG_TAG “gingerbreak hooker” void DirectVolume::handlePartitionAdded(const char *devpath, NetlinkEvent *evt) { int major = atoi(evt->findParam("MAJOR")); int minor = atoi(evt->findParam("MINOR")); int part_num; const char *tmp = evt->findParam("PARTN"); if (tmp) { part_num = atoi(tmp); } else { SLOGW("Kernel block uevent missing 'PARTN'"); part_num = 1; } + if (part_num > MAX_PARTITIONS || part_num < 1) { + SLOGE("Invalid 'PARTN' value"); + return; + } if (part_num > mDiskNumParts) { mDiskNumParts = part_num; } ... if (part_num >= MAX_PARTITIONS) { SLOGE("Dv:partAdd: ignoring part_num = %d (max: %d)\n", part_num, MAX_PARTITIONS); } else { mPartMinors[part_num -1] = minor; } mPendingPartMap &= ~(1 << part_num); … }
相关文章推荐
- Android Root方法原理解析及Hook(四) GingerBreak
- Android Root方法原理解析及Hook(三) FrameworkListener漏洞
- Android Root方法原理解析及Hook(一) adbd漏洞
- Android Root方法原理解析及Hook(二) udev漏洞
- Android Root方法原理解析及Hook(一) adbd漏洞
- Android Root方法原理解析及Hook(三) FrameworkListener漏洞
- Android Root方法原理解析及Hook(一) adbd漏洞
- Android Root方法原理解析及Hook(二) udev漏洞
- Android中免root的hook框架Legend原理解析
- Android 中免 Root 实现 Hook 的 Dexposed 实现原理解析以及如何实现应用的热修复
- 关于Android上对so进行函数的hook的完整原理解析,最新测试通过
- Android源码解析之在Activity中调用measure方法测量宽高的原理
- Android系统篇之----免root实现Hook系统服务拦截方法
- Android ListView 单条刷新方法实践及原理解析
- Android插件化原理解析——Hook机制之动态代理
- android ListView 单条刷新方法实践及原理解析
- Android 插件化原理解析(2):Hook 机制之动态代理
- Android中免Root实现Hook的Dexposed框架实现原理解析以及如何实现应用的热修复
- Android插件化原理解析——Hook机制之动态代理
- Android插件化原理解析——Hook机制之Binder Hook