看流星社区

 找回密码
 注册账号
查看: 2266|回复: 1

分享反上传以及扫描文件 HOOK ZwCreateFile源码

[复制链接]

该用户从未签到

发表于 2018-3-8 11:07:01 | 显示全部楼层 |阅读模式


分享反上传以及扫描文件 HOOK ZwCreateFile源码

  1. NTSTATUS __stdcall NewZwCreateFile(
  2.         OUT PHANDLE             FileHandle,
  3.         IN ACCESS_MASK          DesiredAccess,
  4.         IN POBJECT_ATTRIBUTES   ObjectAttributes,
  5.         OUT PVOID    IoStatusBlock,
  6.         IN PLARGE_INTEGER       AllocationSize OPTIONAL,
  7.         IN ULONG                FileAttributes,
  8.         IN ULONG                ShareAccess,
  9.         IN ULONG                CreateDisposition,
  10.         IN ULONG                CreateOptions,
  11.         IN PVOID                EaBuffer OPTIONAL,
  12.         IN ULONG                EaLength)
  13. {
  14.         NTSTATUS status;
  15.         ZwCreateFile_1 OldZwCreateFile;
  16.         WCHAR lpwzDllName[260] = {0};
  17.         WCHAR lpAttackDll[5][260] = {L"1",L"2",L"3",L"4"};//要保护的东西名称     当然你可以自己想办法过滤不是游戏和系统的东西全部给我禁止访问

  18.         __try{
  19.                 if (IsBadReadPtr(ObjectAttributes,sizeof(OBJECT_ATTRIBUTES)) == 0)
  20.                 {
  21.                         if (ValidateUnicodeString(ObjectAttributes->ObjectName))
  22.                         {
  23.                                 //效验unicode的有效性
  24.                                 if (ObjectAttributes->ObjectName->Buffer != NULL &&
  25.                                         ObjectAttributes->ObjectName->Length > 6)
  26.                                 {
  27.                                         memcpy(lpwzDllName,ObjectAttributes->ObjectName->Buffer,ObjectAttributes->ObjectName->Length);
  28.                                         if (wcsstr(lpwzDllName,lpAttackDll[0]) != 0 ||
  29.                                                 wcsstr(lpwzDllName,lpAttackDll[1]) != 0 ||
  30.                                                 wcsstr(lpwzDllName,lpAttackDll[2]) != 0 ||
  31.                                                 wcsstr(lpwzDllName,lpAttackDll[3]) != 0)
  32.                                         {
  33.                                                 //拒绝访问
  34.                                                 return STATUS_ACCESS_DENIED;
  35.                                         }
  36.                                 }
  37.                         }
  38.                 }
  39.         }__except(1){

  40.         }
  41.         OldZwCreateFile = (ZwCreateFile_1)ZwCreateFileHookZone;
  42.         status = OldZwCreateFile(FileHandle,
  43.                 DesiredAccess,
  44.                 ObjectAttributes,
  45.                 IoStatusBlock,
  46.                 AllocationSize,
  47.                 FileAttributes,
  48.                 ShareAccess,
  49.                 CreateDisposition,
  50.                 CreateOptions,
  51.                 EaBuffer,
  52.                 EaLength);

  53.         return status;
复制代码

  • TA的每日心情
    开心
    2020-11-2 21:57
  • 发表于 2019-7-18 17:42:32 | 显示全部楼层
    支持楼主,支持看流星社区,以后我会经常来!
    点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 注册账号

    本版积分规则

    小黑屋|手机版|Archiver|看流星社区 |网站地图

    GMT+8, 2024-3-29 05:41

    Powered by Kanliuxing X3.4

    © 2010-2019 kanliuxing.com

    快速回复 返回顶部 返回列表