Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的DLL只能注入手动映射?_C++_Winapi_Dll_Inject - Fatal编程技术网

C++ 为什么我的DLL只能注入手动映射?

C++ 为什么我的DLL只能注入手动映射?,c++,winapi,dll,inject,C++,Winapi,Dll,Inject,所以我制作了一个DLL,它包含了很多代码,我知道它以前是有效的。我已经格式化了我的计算机并更新了我的DLL。使用极限注入器,DLL将仅使用手动映射进行注入。这很好,但我想知道我需要改变什么,以便能够用标准方法注入 bool注入(DWORD pId,char*dllName) { handleh=OpenProcess(PROCESS\u ALL\u ACCESS,false,pId); 如果(h) { LPVOID LoadLibAddr=(LPVOID)GetProcAddress(GetM

所以我制作了一个DLL,它包含了很多代码,我知道它以前是有效的。我已经格式化了我的计算机并更新了我的DLL。使用极限注入器,DLL将仅使用手动映射进行注入。这很好,但我想知道我需要改变什么,以便能够用标准方法注入

bool注入(DWORD pId,char*dllName)
{
handleh=OpenProcess(PROCESS\u ALL\u ACCESS,false,pId);
如果(h)
{
LPVOID LoadLibAddr=(LPVOID)GetProcAddress(GetModuleHandleA(“kernel32.dll”),“LoadLibraryA”);
LPVOID dereercomp=VirtualAllocEx(h,NULL,strlen(dllName),MEM_COMMIT | MEM_RESERVE,PAGE_READWRITE);
WriteProcessMemory(h,dereercomp,dllName,strlen(dllName),NULL);
HANDLE asdc=CreateRemoteThread(h,NULL,NULL,(LPTHREAD\u START\u例程)LoadLibAddr,dereercomp,0,NULL);
如果(!asdc)
{
printf(to_string(GetLastError()).c_str());
}
WaitForSingleObject(asdc,无限);
VirtualFreeEx(h、dereercomp、strlen(dllName)、MEM_发行版);
闭合手柄(asdc);
闭合手柄(h);
返回true;
}
返回false;

}
可能是您正在注入的应用程序阻止了它使用
CreateRemoteThread
@Brandon注入。我已经用一个简单的hello world消息框测试了其他注入方法。该DLL工作正常。如果没有代码或任何东西,我们将无法理解什么是错误的。您需要提供有关DLL注入失败的信息,例如
CreateRemoteThread
的返回值。注入失败的原因有很多,比如版本不一致,请参考[this]。()@StriveSun MSFT注意,我从在线源代码中获得了这段代码。这个注射器已经为我工作过很多次了。从我看来,虽然我的喷油器没有返回任何错误代码。从我所看到的,虽然DLL显然没有被注入。我已经在线程中添加了注入的代码。