Rootkit Unhooker驱动逆向分析

本文详细介绍了Rootkit Unhooker驱动的逆向分析过程,涉及SSDT、Shadow SSDT的检测,进程检测与杀进程方法,内核模块和Stealth Code的检测技术,以及代码Hook的检测。作者分享了通过IoControlCode进行的各种功能实现,如检测和恢复SSDT Hook,遍历内核模块和内存搜索,以及进程保护措施。文章还提及了参考的相关资源和技术细节。
摘要由CSDN通过智能技术生成
 这个驱动本来准备端午节搞的,但后来端午节去了躺北京玩了几天,也就搁置了...最近连续花了4个晚上,大致把它搞的差不多了,有些收获...初学 window驱动,水平很菜,有些东西我也未必清明,加上3环的代码还没有吃透,期间也没有用调试器跟踪,全是IDA(F5)静态分析的,谬误在所难免, 高手请飘过,希望对菜鸟学习有点帮助.

1.SSDT检测

这个功能有三个IoControlCode与之对应,他们分别是22000fh(拷贝KeServiceDescriptorTable); 220007h(拷贝KeServiceDescriptorTable->ServiceTable);22000bh(恢复一个 ssdt hook),这个功能目前还不具备检测和恢复inline hook的功能

2.Shadow SSDT检测

这个功能实现和SSDT差不多,都是从KeSystemServiceDescriptorTableShadow入手,不过3环需要为每个平台配置一张函数名表(ssdt可以不配置函数名表,可以从ntdll.dll中收集),详细文章可以参见zhuwg兄弟写的<<shadow ssdt 学习笔记>>一文

3.进程

3.1 进程检测

IoControlCode是22001Bh,在检测之前会设置检测方式,然后根据检测方式进行检测.这个功能主要由 irp_mj_device_control_dispatch_function函数的is_22001Bh_list_process分支完成,这里集成了4种检测方法,大致如下:

3.1.1 基于PspCidTalbe的检测,这里rku对句柄表做了解析,对每个Object判定是不是EPROCESS,是则插入到输出列表 (icesword也有这中检测,不过在1.22中没有解析句柄表,而是用ExEnumHandleTable搞定这些) 详细代码见 list_process_in_2k_by_handle_table/list_process_in_not_2k_by_handl
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值