找回密码
 加入网盟
分割线
官方精品推荐
例子是由CodeProject下载,利用API Hook技术,拦截替换了系统NtQuerySystemInformation函数,在替换的函数中将Windows系统计算器进程calc.exe过滤,当我们打开任务管理器或者一些使用NtQuerySystemInformation来获取系统进程信息的工具时,无法看到calc.exe进程。该例中还包含了一个强大的mHook工具类。
工程编译后的DLL文件添加到注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows项下的AppInit_DLLs键中。此后启动任何使用了User32.dll的程序均会加载该DLL。
注意:如果是64位系统,那么DLL文件需要编译为64位才可以正常使用。
重点代码如下:
  1. if (SystemProcessInformation == SystemInformationClass && STATUS_SUCCESS == status)
  2. {
  3. //
  4. // Loop through the list of processes
  5. //

  6. PMY_SYSTEM_PROCESS_INFORMATION pCurrent = NULL;
  7. PMY_SYSTEM_PROCESS_INFORMATION pNext = (PMY_SYSTEM_PROCESS_INFORMATION)SystemInformation;

  8. do
  9. {
  10. pCurrent = pNext;
  11. pNext = (PMY_SYSTEM_PROCESS_INFORMATION)((PUCHAR)pCurrent + pCurrent->NextEntryOffset);

  12. if (!wcsncmp(pNext->ImageName.Buffer, L"calc.exe", pNext->ImageName.Length))
  13. {
  14. if (0 == pNext->NextEntryOffset)
  15. {
  16. pCurrent->NextEntryOffset = 0;
  17. }
  18. else
  19. {
  20. pCurrent->NextEntryOffset += pNext->NextEntryOffset;
  21. }

  22. pNext = pCurrent;
  23. }
  24. }
  25. while(pCurrent->NextEntryOffset != 0);
  26. }
复制代码




效果图:


点击下载:AppInitHook

转自邓佳的博客。

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 加入网盟
关闭

华夏网盟推荐 上一条 /1 下一条