您现在的位置: 爱51代码网 >> 范文 >> 文章正文
NtMapViewOfSection防止DLL注入的代码

NtMapViewOfSection防止DLL注入的代码
为了防止DLL注入 SSDT HOOK 了NtMapViewOfSection函数:


C/C++ code?

NTSTATUS MyNtMapViewOfSection(                               __in HANDLE SectionHandle,                               __in HANDLE ProcessHandle,                               __inout PVOID *BaseAddress,                               __in ULONG_PTR ZeroBits,                               __in SIZE_T CommitSize,                               __inout_opt PLARGE_INTEGER SectionOffset,                               __inout PSIZE_T ViewSize,                               __in SECTION_INHERIT InheritDisposition,                               __in ULONG AllocationType,                               __in ULONG Win32Protect                               ) {     PSECTION Section;     PEPROCESS Process;     NTSTATUS status;     if (ObReferenceObjectByHandle (ProcessHandle,0,*PsProcessType,0,(PVOID *)&Process,NULL) == 0)     {         if (strstr((char*)PsGetProcessImageFileName(Process),"taskmgr"))         {             if (ObReferenceObjectByHandle (SectionHandle,0,0,0,(PVOID*)&Section,NULL) == 0)             {                 if (Section->Segment->ControlArea!=0 && Section->Segment->ControlArea->FilePointer!=0)                 {                     if (Section->Segment->ControlArea->FilePointer->FileName.Buffer!=0)                     {                         if (wcsstr(Section->Segment->ControlArea->FilePointer->FileName.Buffer,L"npggNT.des"))                         {                             ObDereferenceObject(Section);                             ObDereferenceObject(Process);                             return STATUS_ACCESS_DENIED;                         }                     }                 }                   ObDereferenceObject(Section);             }                     }         ObDereferenceObject(Process);     }     __asm     {         push Win32Protect         push AllocationType         push InheritDisposition         push ViewSize         push SectionOffset         push CommitSize         push ZeroBits         push BaseAddress         push ProcessHandle         push SectionHandle         call [g_MapViewOfSectionCall]         mov status ,eax     }     return status; }


是防止了注入 但是有时候蓝屏 蓝在 if (Section->Segment->ControlArea->FilePointer->FileName.Buffer!=0) 这句
反复思考觉得可能是调用OpenFileMapping MapViewOfFile...函数映射文件导致的
不熟悉 _SECTION_OBJECT这对象。。。
请问怎么判断调用此函数是不是为了加载DLL?

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    搞笑生日祝福
    synchronized和java.util.co
    Java中的异常处理机制的简单
    final, finally, finalize的
    java try {}里有一个return语
    java里面String s="a"+"b"+"
    数组有没有length()这个方法
    php数据库操作类代码(增,删,
    could not initialize proxy
    Spring Bean 生命周期 三种表
    Netty4 SEDA 事件驱动原理分
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |