顯示任何進程加載的DLL文件的代碼
更新時間:2013年05月25日 12:45:58 作者:
c語言實現(xiàn)的顯示任何進程加載的DLL,方便開發(fā)軟件的朋友
復(fù)制代碼 代碼如下:
#include <windows.h>
#include <iostream.h>
#include <tlhelp32.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char exename[500];
printf("[ENTER EXE FILE NAME]\t");
scanf("%s",exename);
printf("\n[YOU ENTER]\t%s\n",exename);
Sleep(3000);
//提升當前進程的權(quán)限使其有權(quán)限對其他進程進行操作
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ){
//WriteToLog("openprocesstoken error");
return 1;
}
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){
CloseHandle( hToken );
//WriteToLog("lookuprivilegevalue error");
return 1;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ){
CloseHandle( hToken );
return 1;
}
//取得目標進程的PID
DWORD pid;
HANDLE snapshot;
snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
struct tagPROCESSENTRY32 processsnap;
processsnap.dwSize=sizeof(tagPROCESSENTRY32);
for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){
if(!stricmp(processsnap.szExeFile,exename))
{
pid=processsnap.th32ProcessID;
break;
}
}
CloseHandle(snapshot);
////////////////////////////////////////
MODULEENTRY32 pe32;
// 在使用這個結(jié)構(gòu)之前,先設(shè)置它的大小
pe32.dwSize = sizeof(pe32);
// 給進程內(nèi)所有模塊拍一個快照
//276為某進程的ID
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
//建立快照失敗
return -1;
printf("[createtoolhelp32snapshot error]\n");
}
// 遍歷進程快照,輪流顯示每個進程的信息
BOOL bMore = Module32First(hProcessSnap, &pe32);
while(bMore)
{
printf("\n[DLL NAME]\t%s\n",pe32.szModule);
printf("[DLL PATH]\t%s\n",pe32.szExePath);
bMore = Module32Next(hProcessSnap, &pe32);
}
// 不要忘記清除掉snapshot對象
CloseHandle(hProcessSnap);
return 0;
}
相關(guān)文章
C++學了這么多年你知道為什么定義類時,類的定義放在.h文件中,而類的實現(xiàn)放在cpp文件中。它們?yōu)槭裁茨軌蜿P(guān)聯(lián)到一起呢?你知道什么東西可以放在.h文件中,什么不能。什么東西又可以放在cpp文件中。如果你忘記了或是壓根就不明白,那么讀過此文你會清晰無比?。?/div> 2014-09-09
C++實現(xiàn)ETW進行進程變動監(jiān)控詳解
ETW提供了一種對用戶層應(yīng)用程序和內(nèi)核層驅(qū)動創(chuàng)建的事件對象的跟蹤記錄機制。為開發(fā)者提供了一套快速、可靠、通用的一系列事件跟蹤特性。本文將利用ETW進行進程變動監(jiān)控,需要的可以參考一下2022-07-07
C++獲取多瀏覽器上網(wǎng)歷史記錄示例代碼(支持獲取IE/Chrome/FireFox)
這篇文章主要介紹了C++獲取多瀏覽器上網(wǎng)歷史記錄示例代碼,支持獲取IE, Chrome,FireFox等瀏覽器2013-11-11最新評論

