监控进程创建代码

#include   "stdafx.h"  
  #include   "apihook.h"  
  #include   <stdio.h>  
   
   
  typedef   BOOL   (WINAPI   *PFNCPW)(  
  LPCTSTR   lpApplicationName,  
  LPTSTR   lpCommandLine,  
  LPSECURITY_ATTRIBUTES   lpProcessAttributes,  
  LPSECURITY_ATTRIBUTES   lpThreadAttributes,  
  BOOL   bInheritHandles,  
  DWORD   dwCreationFlags,  
  LPVOID   lpEnvironment,  
  LPCTSTR   lpCurrentDirectory,  
  LPSTARTUPINFO   lpStartupInfo,  
  LPPROCESS_INFORMATION   lpProcessInformation  
    );  
   
  extern   CAPIHook   g_CreateProcessW;  
   
  BOOL   WINAPI   proxy_CreateProcessW(  
      LPCTSTR   lpApplicationName,  
      LPTSTR   lpCommandLine,  
      LPSECURITY_ATTRIBUTES   lpProcessAttributes,  
      LPSECURITY_ATTRIBUTES   lpThreadAttributes,  
      BOOL   bInheritHandles,  
      DWORD   dwCreationFlags,  
      LPVOID   lpEnvironment,  
      LPCTSTR   lpCurrentDirectory,  
      LPSTARTUPINFO   lpStartupInfo,  
      LPPROCESS_INFORMATION   lpProcessInformation  
  )  
   
   
  LPSTR   lpszName   =   new   CHAR[   255   ];  
  LPSTR   lpszName1   =   new   CHAR[   255   ];  
  //由于传入的是宽字符串,所以要做处理,,  
  //下面可以添加你要处理的代码,,我只是弹出对话框要求用户确认运行还是不运行  
  ::WideCharToMultiByte(   CP_ACP,   0,   (unsigned   short   *)lpCommandLine,   -1,   lpszName1,   255,   NULL,   NULL   );  
  ::WideCharToMultiByte(   CP_ACP,   0,   (unsigned   short   *)lpApplicationName,   -1,   lpszName,   255,   NULL,   NULL   );  
  OutputDebugString(lpszName);  
  OutputDebugString(lpszName1);  
  wsprintf(buf,"%s/r/n%s",lpszName,lpszName1);  
  if(MessageBox(NULL,buf,"注意",MB_YESNO|MB_ICONWARNING|MB_SYSTEMMODAL)  
  ==IDNO)  
  return FALSE;  
   
  return   ((PFNCPW)(PROC)g_CreateProcessW)(  
    lpApplicationName,  
    lpCommandLine,  
    lpProcessAttributes,  
    lpThreadAttributes,  
    bInheritHandles,  
    dwCreationFlags,  
    lpEnvironment,  
    lpCurrentDirectory,  
    lpStartupInfo,  
    lpProcessInformation  
    );  
   
  }  
   
   
  CAPIHook   g_CreateProcessW("kernel32.dll",   "CreateProcessW",    
  (PROC)proxy_CreateProcessW);  
   
   
   
   
   
   
  BOOL   APIENTRY   DllMain(   HANDLE   hModule,    
                                                DWORD     ul_reason_for_call,    
                                                LPVOID   lpReserved  
    )  
  {  
          return   TRUE;  
  }  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值