1. #include "stdafx.h"
  2. #define _WIN32_DCOM
  3. #include <iostream>
  4. using namespace std;
  5. #include <comdef.h>
  6. #include <Wbemidl.h>
  7. # pragma comment(lib, "wbemuuid.lib")
  8. int main(int argc, char **argv)
  9. {
  10. HRESULT hres;
  11. hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
  12. if (FAILED(hres))
  13. {
  14. cout << "Failed to initialize COM library. "
  15. << "Error code = 0x"
  16. << hex << hres << endl;
  17. return 1;
  18. }
  19. IWbemLocator *pLoc = 0;
  20. HRESULT hr;
  21. hr = CoCreateInstance(CLSID_WbemLocator, 0,
  22. CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
  23. if (FAILED(hr))
  24. {
  25. cout << "Failed to create IWbemLocator object. Err code = 0x"
  26. << hex << hr << endl;
  27. return hr;     // Program has failed.
  28. }
  29. IWbemServices *pSvc = 0;
  30. bstr_t strNetworkResource("ROOT\\CIMV2");
  31. hr = pLoc->ConnectServer(
  32. strNetworkResource,
  33. NULL, NULL, 0, NULL, 0, 0, &pSvc);
  34. if (FAILED(hr))
  35. {
  36. cout << "Could not connect. Error code = 0x"
  37. << hex << hr << endl;
  38. pLoc->Release();
  39. CoUninitialize();
  40. return hr;      // Program has failed.
  41. }
  42. cout << "Connected to WMI" << endl;
  43. // Set the proxy so that impersonation of the client occurs.
  44. hr = CoSetProxyBlanket(pSvc,
  45. RPC_C_AUTHN_WINNT,
  46. RPC_C_AUTHZ_NONE,
  47. NULL,
  48. RPC_C_AUTHN_LEVEL_CALL,
  49. RPC_C_IMP_LEVEL_IMPERSONATE,
  50. NULL,
  51. EOAC_NONE
  52. );
  53. if (FAILED(hr))
  54. {
  55. cout << "Could not set proxy blanket. Error code = 0x"
  56. << hex << hr << endl;
  57. pSvc->Release();
  58. pLoc->Release();
  59. CoUninitialize();
  60. return hr;
  61. }
  62. bstr_t strLang("WQL");
  63. //监视taskmgr.exe进程创建
  64. bstr_t strQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'taskmgr.exe'");
  65. IEnumWbemClassObject* pResult = NULL;
  66. hr = pSvc->ExecNotificationQuery(strLang, strQuery, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pResult);
  67. if(SUCCEEDED(hr))
  68. {
  69. do{
  70. IWbemClassObject* pObject = NULL;
  71. ULONG lCnt = 0;
  72. hr = pResult->Next(WBEM_INFINITE, 1, &pObject, &lCnt);
  73. if(SUCCEEDED(hr) && pObject)
  74. {
  75. cout<<"taskmgr.exe进程已创建"<<endl;
  76. break; //退出
  77. }
  78. }while(true);
  79. }
  80. pSvc->Release();
  81. pLoc->Release();
  82. CoUninitialize();
  83. CoUninitialize();
  84. return 0;   // Program successfully completed.
  85. }

http://blog.csdn.net/zwfgdlc/article/details/6613605

ring3下利用WMI监视进程创建(vc版)的更多相关文章

  1. 用Visual studio2012在Windows8上开发内核驱动监视进程创建

    在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破.在Windows 95中,至少应用程序I/O操作是不受限制的,而在Win ...

  2. 小试X64 inline HOOK,hook explorer.exe--->CreateProcessInternalW监视进程创建

    原始函数是这样的 kernel32!CreateProcessInternalW: 00000000`7738e750 4c8bdc          mov     r11,rsp 00000000 ...

  3. 64位CreateProcess逆向:(二)0环下参数的整合即创建进程的整体流程

    转载:https://bbs.pediy.com/thread-207683.htm 点击下面进入总目录: 64位Windows创建64位进程逆向分析(总目录) 在上一篇文章中,我们介绍了Create ...

  4. 利用Delphi监视注册表的变化

    转帖:利用Delphi监视注册表的变化 2009-12-23 11:53:51 分类: 利用Delphi监视注册表的变化       我们在编写软件的时候,常常需要把一些信息保存到系统的注册表中.如果 ...

  5. python黑帽子学习笔记1:pyqt5 designer+wmi实现进程监视器

    环境说明:python3.6 所需要模块:wmi.pyqt5.pythonMagick 先放上一张成品效果图,如图所示: 界面利用pyqt5的designer实现,画好界面如下图所示: 画好后,保存好 ...

  6. 介绍linux下利用编译bash设置root账号共用的权限审计设置

    在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚是麻烦!在此,介绍下利用编译bash使不 ...

  7. Ring3下干净的强行删除文件

    在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除. ...

  8. Linux-进程描述(4)之进程优先级与进程创建执行

    进程优先级 进程cpu资源分配就是指进程的优先权(priority).优先权高的进程有优先执行权利. 权限与优先级.权限(privilege)是指在多用户计算机系统的管理中,某个特定的用户具有特定的系 ...

  9. Xshell5下利用sftp上传下载传输文件

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...

随机推荐

  1. 【BZOJ 1033】 [ZJOI2008]杀蚂蚁antbuster(判断线段是否和圆相交)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1033 [题意] https://www.zybuluo.com/Jerusalem/n ...

  2. zookeeper 客户端操作

    代码 /** * 创建zk客户端 * 实现循环监听的两个必要条件:1.程序不能结束2.递归调用监听器 * @author tele * */ public class Demo { ; //多个节点用 ...

  3. Druid 专题

    数据源配置: #datasource #Introductions: https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7 ...

  4. java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结

    代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...

  5. C#中的interface没那么简单

    最近在园子里闲逛看到一篇文章“(抽象)类和接口细节分析”,尽管作者很细心很细致.可事实上C#里面的interface没那么简单,interface有着大量不为人知的小秘密的说. 1.值类型也能实现接口 ...

  6. e.target e.currenttarget

    概述 当事件穿过 DOM 时,识别事件的当前目标对象(Identifies the current target for the event, as the event traverses the D ...

  7. TCP的三次握手和四次挥手【经典】

    参考:http://blog.csdn.net/cmm0401/article/details/77865479

  8. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  9. Python入门(good)

    Python缩进和冒号对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空白数量是 ...

  10. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...