为什么使用Detours创建进程并注入dll时失败?

Viewed 52

主要代码如下:

#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "detours.h"

#pragma comment(lib, "detours.lib")

int main() {
	
	STARTUPINFO si = { sizeof(si) };
	PROCESS_INFORMATION pi;

	LPCWSTR targetApp = L".\\Victim.exe";

	LPCSTR hookDll = ".\\MyHook64.dll";
	
	BOOL result = DetourCreateProcessWithDllExW(
		targetApp, NULL, NULL, NULL, FALSE,
		0, NULL, NULL,
		&si, &pi, hookDll, NULL
	);

	if (!result) {
		printf("Failed to start process!, Error: %d\n", GetLastError());
		return 1;
	}

	printf("Process started and DLL injected!\n");
	WaitForSingleObject(pi.hProcess, INFINITE);
	DWORD exitCode;
	GetExitCodeProcess(pi.hProcess, &exitCode);
	printf("Target process exited with code: 0x%x\n", exitCode);
	return 0;
}

然而,运行时却首先出现了 Process started and DLL injected! 的输出,然后又出现了 0xc000007b 的报错。此外,直接使用 CreateProcess 来运行 Victim.exe 时,不会出现错误,而在 Victim.exe 中使用 LoadLibrary 加载 MyHook.dll 时,也没有出现错误,并且成功实现了 Hook 功能。那么,为什么 DetourCreateProcessWithDllEx 会失败呢?

0 Answers
Related Questions