欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

山寨Fsd Inline Hook

山寨Fsd Inline Hook

代码大部分是炉子[0GiNr]提供的,在此感谢。
增加了一段获取通过NTFS驱动对象获取分发函数地址的代码,如果已经被人hook过,可能造成蓝屏。最好的方法还是解析NTFS文件获取原始分发函数地址。Xp sp2测试通过。
extern POBJECT_TYPE *IoDriverObjectType;
NTKERNELAPI
NTSTATUS
NTAPI
ObReferenceObjectByName (
             IN PUNICODE_STRING ObjectName,
             IN ULONG Attributes,
             IN PACCESS_STATE PassedAccessState OPTIONAL,
             IN ACCESS_MASK DesiredAccess OPTIONAL,
             IN POBJECT_TYPE ObjectType OPTIONAL,
             IN KPROCESSOR_MODE AccessMode,
             IN OUT PVOID ParseContext OPTIONAL,
             OUT PVOID *Object
             );
PULONG NtfsMajorFunction = NULL;
ULONG NtfsDispatch = 0xfa8f3618; //Ntfs!NtfsFsdSetInformation
BOOLEAN GetNtfsMajorFunctionAddr()
{
  PDRIVER_OBJECT  pDriverObject;
  UNICODE_STRING  DeviceName;
  NTSTATUS    ntStaus;
  BOOLEAN      bRet = FALSE;
  RtlInitUnicodeString(&DeviceName, L"\\FileSystem\\Ntfs");
  ntStaus = ObReferenceObjectByName(&DeviceName, OBJ_CASE_INSENSITIVE, NULL, 0, *IoDriverObjectType, KernelMode, NULL, (PVOID*)&pDriverObject);
  if(!NT_SUCCESS(ntStaus))
    goto __end;
  NtfsMajorFunction = (PULONG)pDriverObject->MajorFunction;
  bRet = TRUE;
__end:
  return bRet;
}
NtfsDispatch = NtfsMajorFunction[IRP_MJ_SET_INFORMATION];

上传的附件 FsdInlineHook.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功