列举系统中所有被加载的DLL

 void ShowProcessModules(HWND hwnd, DWORD PId)
{

 SYSTEM_INFO si;
 memset(&si, 0, sizeof(si));
 GetSystemInfo( &si );
 if( PId == 0)
  PId = GetCurrentProcessId();
 DWORD LowAddr, HighAddr;
 LowAddr = (DWORD)si.lpMinimumApplicationAddress;
 HighAddr = (DWORD)si.lpMaximumApplicationAddress;
 HANDLE hdl = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,
         FALSE, PId );
 if (hdl == NULL)
  return;
 char mapfilename[MAX_PATH] = "unknown";
 char tempname[MAX_PATH];
 DWORD nSize = sizeof(mapfilename);
 DWORD MapAddr, MapAddrto = 0;
 
 for (MapAddr = LowAddr; MapAddr < HighAddr; MapAddr += si.dwAllocationGranularity)
 {
 GetMappedFileName( hdl, (LPVOID)MapAddr,mapfilename, nSize );
 if(MapAddr < MapAddrto)
  continue;
 if(strlen(mapfilename) == 0)
  continue;
  
 for(MapAddrto = MapAddr; ; MapAddrto += si.dwPageSize)
  {GetMappedFileName( hdl, (LPVOID)MapAddrto,tempname, nSize );
   if(strcmp(tempname, mapfilename) == 0)
   continue;
   else
    break;
  }
 wsprintf(tempname, "0x%p-0x%p: %s",MapAddr, MapAddrto, mapfilename);
 SendMessage(GetDlgItem(hwnd,IDC_LIST1),LB_ADDSTRING,0,(LPARAM)tempname);

 }
CloseHandle( hdl );
return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值