获取进程路径

该代码段展示了如何使用NtQueryInformationProcess和NtReadVirtualMemory等内核API从进程句柄获取Windows进程的完整路径。这种方法适用于具有PROCESS_QUERY_INFORMATION和PROCESS_VM_READ权限的进程。
摘要由CSDN通过智能技术生成
//获取进程路径,理论上至少支持XP;进程句柄需要PROCESS_QUERY_INFORMATION和PROCESS_VM_READ权限...实现方法和GetModuleFileNameEx类似....

//DESP: get process image path
BOOL process_get_path(HANDLE hProcess, LPTSTR szImagePath, DWORD dwSize)
{
	NTSTATUS ntStatus;
	ULONG uLength;
	DWORD dwBufferSize;
	LPWSTR pBuffer;
	UNICODE_STRING usImagePath;
	PROCESS_BASIC_INFORMATION BasicInformation;
	PRTL_USER_PROCESS_PARAMETERS pProcessParameters;

	//DO: query PEB address
	ntStatus = NtQueryInformationProcess(
		hProcess,
		ProcessBasicInformation,
		&BasicInformation,
		sizeof(PROCESS_BASIC_INFORMATION),
		&uLength);

	if(!NT_SUCCESS(ntStatus))
		return FALSE;

	//DO: read ProcessParameters pointer
	ntStatus = NtReadVirtualMemory(
		hProcess,
		&BasicInformation.PebBaseAddress->ProcessParameters,
		&pProcessParameters,
		sizeof(PRTL_USER_PROCESS_PARAMETERS),
		&uLength);

	if(NT_SUCCESS(ntStatus)) {
		//DO: read ImagePathName UNICODE_STRING
		ntStatus = NtReadVi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值