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. AnimatorSet和PropertyValuesHolders.ofKeyframe

    如果要多个动画配合工作,需要把他们放入AnimatorSet中 ObjectAnimator animator1 = ObjectAnimator.ofFloat(...); animator1.se ...

  2. 10 个免费的 C/C++ 集成开发环境

    集成开发环境(IDE)可以给程序员提供很大的帮助.大多数的IDE包含编译器和解释器.例如微软的 Visual Studio 本身内置的编译器和解释就是很好的例子,Eclipse 是另一个很好的例子.鼓 ...

  3. 在JS中var、let和const的区别

    var有变量提升 x = 4; // 变量 x 设置为 4 console.log(x)  //输出 4 var x; // 声明 x 上面代码相当于下面的 var x; // 声明 xx = 4;  ...

  4. CORDOVA :添加cordova-plugin-file-opener2插件cordova打包报错

    原文:CORDOVA :添加cordova-plugin-file-opener2插件cordova打包报错 最近在接触android项目,其中涉及到APP自动更新的问题,当新APP下载成功后需要打开 ...

  5. WPF 获得触摸精度和触摸点

    原文:WPF 获得触摸精度和触摸点 本文主要告诉大家如何获得所有的触摸设备的触摸精度和触摸点数. 需要通过反射的方法才可以拿到触摸的精度. 使用 Tablet.TabletDevices 可以获得所有 ...

  6. ASP.Net请求小周期

    另一篇另篇2 ASP.NET请求处理全过程 一个ASP.NET请求过程中,从浏览器中发出一个Web请求 到 这个请求被响应并显示在浏览器中的过程中究竟会发生哪些不同的事件,当我们进入这个事件之旅时,我 ...

  7. wpf设置设计时的ViewModel

    原文:wpf设置设计时的ViewModel wpf mvvm开发中,有些情况下,你的view不一定设置DataContext,但是你又想在设计阶段,能够自动提示你的view绑定的viewmodel的内 ...

  8. Like关系查询

    比如:有表1.表2两张相,希望通过like进行关联查询 // mysql中使用concat连接字符串 select  t1.id, t1.title, t2.keyword from t1 inner ...

  9. 【转】Mybatis传多个参数(三种解决方案)

    转自: http://www.2cto.com/database/201409/338155.html 据我目前接触到的传多个参数的方案有三种. 第一种方案: DAO层的函数方法 Public Use ...

  10. quick-cocos2d-x游戏开发【8】——动画与动作

    动画与动作,在quick中都有对其封装,所以我们还是来看一下吧. 总的来说,对于帧动画,quick封装的方法我们能够常常使用,这是很方便的,以下直接上代码来直观感受下, 比方,14张帧图片,採用coc ...