프로세스가 불러오는 dll 모듈 가져오기

5154 단어 dll 모듈

  
  
  
  
  1. // SE_DEBUG_NAME 
  2. bool EnableDebugPriv() 
  3.     HANDLE hToken; 
  4.     TOKEN_PRIVILEGES tp; 
  5.     LUID luid; 
  6.     if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) 
  7.         return false
  8.  
  9.     if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))return false
  10.  
  11.     tp.PrivilegeCount = 1; 
  12.     tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED; 
  13.     tp.Privileges[0].Luid = luid; 
  14.     if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL) ) return false
  15.  
  16.     return true
  17.  
  18. // dll  
  19. bool GetProcAllModule( DWORD dwPID)    
  20. {   
  21.     EnableDebugPriv(); 
  22.     vector m_vProcModuleInfo; 
  23.     m_vProcModuleInfo.clear(); 
  24.     m_vProcModuleInfo.swap(vector ()); 
  25.  
  26.     HANDLE hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE , dwPID);    
  27.  
  28.     if ( INVALID_HANDLE_VALUE == hSnapshot )    
  29.     {    
  30.         return false;    
  31.     }    
  32.  
  33.     MODULEENTRY32  module32;    
  34.  
  35.     module32.dwSize = sizeof(MODULEENTRY32);    
  36.  
  37.     BOOL bRet = Module32First(hSnapshot, &module32);   
  38.  
  39.     while(bRet)   
  40.     {    
  41.         m_vProcModuleInfo.push_back(module32.szExePath); 
  42.         bRet = Module32Next(hSnapshot, &module32); 
  43.     } 
  44.  
  45.     CloseHandle( hSnapshot );    
  46.  
  47.     if (m_vProcModuleInfo.size()) 
  48.     { 
  49.         for(UINT i=0;i<m_vProcModuleInfo.size();i++) 
  50.             cout<<m_vProcModuleInfo[i].c_str()<<endl; 
  51.     } 
  52.     return TRUE;    
  53. }  

좋은 웹페이지 즐겨찾기