16,472
社区成员
发帖
与我相关
我的任务
分享
BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName);
int main(void)
{
DWORD processid[1024],needed,processcount,i;
HANDLE hProcess;
HMODULE hModule;
char path[MAX_PATH] = "",temp[256];
HANDLE hToken;
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
if (EnablePrivilege(hToken,SE_DEBUG_NAME))
{
EnumProcesses(processid, sizeof(processid), &needed);
processcount=needed/sizeof(DWORD);
for (i=0;i<processcount;i++)
{
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i]);
if (hProcess)
{
EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);
GetModuleFileNameExA(hProcess, hModule, path, sizeof(path));
printf("%s\n",path);
}
}
}
}
CloseHandle(hProcess);
CloseHandle(hModule);
getchar();
return 0;
}
HANDLE hProcessSnap =NULL;
PROCESSENTRY32 pe32 ={0};
BOOL bLable =false;
hProcessSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == (HANDLE)-1)
{
return false;
}
pe32.dwSize =sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
CString strName ="";
strName.Format("%s",pe32.szExeFile);
if(strName == strProcessName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId);
MODULEENTRY32 me = { sizeof(me) };
Module32First(hSnapshot, &me);
CString sPath = me.szExePath;
}
}
while(Process32Next(hProcessSnap,&pe32));
}
else
{
CloseHandle(hProcessSnap);
return bLable;
}
BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)
{
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges[0].Luid );//修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限
return( (GetLastError()==ERROR_SUCCESS) );
}
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId);
MODULEENTRY32 me = { sizeof(me) };
Module32First(hSnapshot, &me);
CString sPath = me.szExePath;
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid);
if (hProcess)
{
EnumProcessModules(hProcess,&hModule,sizeof(hModule),&needed);
GetModuleFileNameEx(hProcess,hModule,path,sizeof(path));
}
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processID);
if(hProcess)
{
EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);
GetModuleFileNameEx(hProcess, hModule, path, sizeof(path));
}