41、揭示内核恶意软件行为的研究与实践

揭示内核恶意软件行为的研究与实践

1. Rkprofiler内存标记问题及解决

Rkprofiler在内存标记过程中存在一些问题。在双向链表中,每个元素包含一个 LIST_ENTRY 类型的数据成员,其两个指针指向相邻元素的 LIST_ENTRY 成员。当标记一个列表元素后,恶意软件访问下一个元素时,Rkprofiler仅标记下一个元素的 LIST_ENTRY 成员,而不是标记整个元素及其类型。

为解决此问题,在预分析阶段,会为 SINGLE_LIST_ENTRY LIST_ENTRY 数据成员标注列表元素的类型名称和偏移量。解析类型头文件时,生成器会将这些成员替换为指向列表元素的指针,并将偏移值存储在类型图中,以便监视器找到相邻元素的实际地址。

另外,Windows内核有时使用相对指针遍历列表,如内核函数 NtQueryDirectoryFile 的磁盘文件查询结果数据缓冲区。由于相对指针被定义为无符号整数,需要在内核类型头文件中标记这些相对指针,使Rkprofiler能识别并正确计算元素地址。

Rkprofiler还需处理Windows内核源使用的两种模糊数据类型:
- 联合(union) :在任何给定时间只包含多个可选成员之一,所需内存由最大数据成员决定。猜测联合在给定时间应使用哪个成员依赖于代码上下文,难以在Rkprofiler中自动化处理。
- 通用指针pvoid :可由开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值