修改进程的PE头

时间:2016-12-20 15:02:26

标签: c++ createprocess

我有一个技术问题。我启动了一个外部进程,我注入了自己的DLL。 但是,该进程是在没有/ LAA(largeaddressaware)标志的情况下创建的。这会导致问题,我真的需要启用该标志。我有什么选择来实现这一目标。

我正在创建这样的过程:

CreateProcess(NULL, pExeName, 0, 0, false, CREATE_SUSPENDED | CREATE_UNICODE_ENVIRONMENT,  NULL, pExePath, &siStartupInfo, &piProcessInfo);
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo); 
if(hideGUI)
{
    siStartupInfo.dwFlags = STARTF_USESHOWWINDOW;
    siStartupInfo.wShowWindow = SW_HIDE;
}

加载后,我注入了自己的dll。但是我可以修改进程的PE头,将LAA位设置为TRUE吗?我正在使用CREATE_SUSPENDED标志,也许设置标志已经太晚了?或者还有其他方法可以实现这一目标吗? 我无法修改可执行文件,我只能加载它。如果这是一个坏主意,我还能做到这一点吗?

如果您需要任何其他代码,请告诉我,我是新来的。

谢谢。

0 个答案:

没有答案