成功实现通过SSDT HOOK拒绝指定文件的访问
来源:互联网 发布:星图数据官网 编辑:程序博客网 时间:2024/04/27 16:49
菜鸟习作,老鸟勿笑~~
---------------------------------------------------------------------------------------------------------------------------------
经历两天终于把这个搞出来了,作为一个菜鸟还是有点成就感滴~~嘿嘿。下面记录一下实现过程中的各种问题,作为以后的参考。
一句话:内核如沼泽。
首先是找到KeServiceDescriptorTable,这个还是比较简单的,因为NTOSKRNL已经道出了这个表的指针,所以只要extern一下就行了。之后的修改SSDT表的内容也比较顺利。下面是KeServiceDescriptorTable的结构:
保存在表中的函数地址其实就是个跳转的过程,每个地址对应的函数进去之后的第一句都是mov ID的形式,所以第二字节就是NTDLL内核接口的Service ID。
然后就是根据ObjectAttributes->ObjectName得到文件名的过程。由于菜啊,这中间出过很多问题。
最重要的一个就是UNICODE是两字节,这个在保存UNICODE_STRING 长度的时候极为重要,我就是一直忘记,所以长度总是少了一半。
然后就是字符串的复制--要把提取到的字符串放到caller提供的buffer里。字符串复制其实直接内存复制就行了。本人受C语言课的毒害,还自己写了个字符串复制函数,结果在内存访问方面有bug。直接RtlCopyMemory完事。
字符串比较也有现成的函数RtlCompareUnicodeString。我巨汗!!!
在detour函数里,如果文件名和你想要的一样就返回STATUS_ACCESS_DENIED,如果不一样就call真正的内核函数。
---------------------------------------------------------------------------------------------------------------------------------
下一步要实现和应用层的交互,主要是DeviceIoControl,明天干~~
- 成功实现通过SSDT HOOK拒绝指定文件的访问
- SSDT HOOK实现文件保护
- 简单HOOK SSDT实现文件防删除
- SSDT HOOK 保护文件
- Delphi实现SSDT Hook
- SSDT Hook 实现
- 通过SSDT UnHOOK 函数HOOK
- 通过SSDT UnHOOK 函数HOOK
- SSDT HOOK的框架
- SSDT HOOK的恢复
- SSDT HOOK实现进程保护
- SSDT HOOK禁止指定进程结束
- SSDT Hook实现内核级的进程保护
- SSDT Hook实现内核级的进程保护
- SSDT Hook实现内核级的进程保护
- SSDT Hook实现内核级的进程保护
- SSDT Hook实现内核级的进程保护
- 谈谈 通杀SSDT hook和Shadow SSDT hook的方法
- Ogitor的编译步骤
- 2011.5.23 C++对齐
- Android应用程序分析——apk的组成
- if ( yy == xx.getValue() ) 编译器扩展模拟代码
- wpf中多窗口线程处理
- 成功实现通过SSDT HOOK拒绝指定文件的访问
- Android---Activity生命周期状态
- SQL语句优化与索引的使用
- 客户认为导航地图数据升级后不够新
- U盘各种启动盘的制作(推荐做PE启动盘)!以及用U盘安装系统(把你的U盘当光盘来用)
- 关于QImage和IplImage之间转换的实现
- treectrl入门
- treectrl入门
- VirtualBox虚拟机网络连接设置的四种方式