ring3下利用WMI监视进程创建(vc版)

[cpp] view plain copy

  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

时间: 2024-11-14 08:32:19

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

小试X64 inline HOOK,hook explorer.exe---&gt;CreateProcessInternalW监视进程创建

原始函数是这样的 [cpp] view plain copy kernel32!CreateProcessInternalW: 00000000`7738e750 4c8bdc          mov     r11,rsp 00000000`7738e753 53              push    rbx 00000000`7738e754 56              push    rsi 00000000`7738e755 57              push    rd

在Linux下利用crond实现一个定时任务并完成一个守护(精灵)进程

一.利用crond实现一个定时任务       在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为"crontab",是"cron table"的简写. crontab支持两种状态: a.直接编写计划任务: b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定. 为当前用户创建cron服

Ring3下实现进程保护,不用hook

今天在分析一款木马的时候,发现做了进程保护,没加驱动,也没做hook,能做进程保护,感觉非常奇怪,原来是这么一回事,mark一下吧! #include "stdafx.h" #include <windows.h> #include <Aclapi.h> #pragma comment(lib,"Advapi32.lib") BOOL Ring3ProtectProcess() { HANDLE hProcess = ::GetCurrent

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

进程优先级 进程cpu资源分配就是指进程的优先权(priority).优先权高的进程有优先执行权利. 权限与优先级.权限(privilege)是指在多用户计算机系统的管理中,某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制.权限是有或没有的问题,而优先级则是在已经具有了权限而讨论权限大小的问题.配置进程优先权对多任务环境的linux很有用,可以改善系统性能.还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能.

QueryUserAPC Ring3下 APC注入

DLL.dll可以自己建,实测在win7 X86 X64, win10 X64下可用 #pragma once /****************************************************************************************************/ /*Ring3下 APC注入提权 TLHelp32枚举线程 vector*/ /***************************************************

利用cron监视后台进程状态

利用cron监视后台进程状态 http://blog.csdn.net/dyx810601/article/details/72967758 1. 利用cron监视后台进程状态,如果进程死掉或服务器重启后自动拉起进程. 目的:Linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志. 每分钟调用一下脚本cron_worker.sh $crontab

Ring3 下 API Inline Hook 优化方案探索与实现

??本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/51302024 ?? 以前写过两篇"[Win32] API Hook(1)在32/64位系统上的实现"博客,介绍并给出了 API inline hook 代码,如下: ????blog.csdn.net/zuishikonghuan/article/details/47

理解Android进程创建流程(转)

/frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - RuntimeInit.java - Zygote.java /frameworks/base/core/java/android/os/Process.java /frameworks/base/core/jni/com_android_internal_os_Zygote.cpp /frameworks

iOS并发编程笔记,包含GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,并发测试的方案等

iOS并发编程笔记,包含GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,并发测试的方案等 线程 使用Instruments的CPU strategy view查看代码如何在多核CPU中执行.创建线程可以使用POSIX 线程API,或者NSThread(封装POSIX 线程API).下面是并发4个线程在一百万个数字中找最小值和最大值的pthread例子: #import