C ++ DLL Injector无法正常工作

时间:2018-03-20 19:06:31

标签: c++ dll

我在c ++中编写DLL注入器,但它根本不起作用。所以我想做的只是注入我自己的DLL,它应该打开一个消息框,上面写着:" Hello"进入虚拟程序,但没有任何事情发生。我认为它可能是句柄,但读写内存效果很好。我还尝试了以下显示的代码之外的其他变量,但没有任何对我有用,所以我希望有足够的信息开始,如果不是只是告诉我,这里的代码已经感谢:

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;
}

1 个答案:

答案 0 :(得分:0)

实际上很抱歉,我会关闭这个问题,但是从正常的std :: string到LPCSTR的转换导致了问题,而不是实际的注入器。所以是的,但如果有人遇到同样的问题。在我的情况下,当我使用myString.c_str();调用函数时例如:Inject(dllPath.c_str(),hProcess);当我试图&#34;保存&#34; LPCSTR更早,而不是称之为:

LPCSTR dllPath;
dllPath = sDllPath.c_str();

Inject(dllPath, hProcess);

它没有用,但是我找到了对这篇文章感到遗憾的方法。