【发布时间】:2018-03-20 19:06:31
【问题描述】:
我正在用 C++ 编写一个 DLL 注入器,但它根本不起作用。所以我想做的只是注入我自己的DLL,它应该打开一个消息框,上面写着:“你好”到一个虚拟程序中,但什么也没发生。我以为它可能是句柄,但是读写内存就可以了。除了下面显示的代码之外,我还尝试了其他变体,但对我没有任何帮助,所以我希望这是足够的信息,如果不只是告诉我,这里的代码已经谢谢:
BOOL Inject(LPCSTR DllPath, HANDLE hProc) {
LPVOID pDllPath = VirtualAllocEx(hProc, 0, strlen(DllPath) + 1,
MEM_COMMIT, PAGE_READWRITE);
bool written = WriteProcessMemory(hProc, pDllPath, DllPath,
strlen(DllPath) + 1, 0);
HANDLE hLoadThread = CreateRemoteThread(hProc, 0, 0,
(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("kernel32.dll"),
"LoadLibraryA"), pDllPath, 0, 0);
std::cout << pDllPath << std::endl;
WaitForSingleObject(hLoadThread, INFINITE);
VirtualFreeEx(hProc, pDllPath, strlen(DllPath) + 1, MEM_RELEASE);
return written;
}
【问题讨论】:
-
“它只是不工作”不是对问题的可接受描述。我们应该如何处理这种级别的信息?你想做什么?当你尝试它时会发生什么?你想发生什么?我们必须继续推断您想要做的是一个脱离上下文的函数,您自己承认,它不会做那件事!到目前为止,您采取了哪些措施?您从哪里“听到”“它”可能是编译器,“它”是什么?
-
对不起,我是新来的,是的,你是对的。所以我想将一个DLL注入一个虚拟程序,我正在用你可以在那里看到的方法尝试它^句柄没问题,因为我可以从进程中写入和读取内存,它甚至返回我已经将路径写入程序但没有任何反应。我的 DLL 应该打开一个消息框,上面写着:“你好”。所以我尝试了 DLL 注入的其他变体,但没有任何效果。