【问题标题】:C++ DLL Injector not workingC++ DLL 注入器不工作
【发布时间】: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 注入的其他变体,但没有任何效果。

标签: c++ dll


【解决方案1】:

对不起,伙计们,我会结束这个问题,但它是从普通 std::string 到 LPCSTR 的转换导致了问题,而不是实际的注入器。是的,但是如果你们中的某个人遇到了同样的问题。就我而言,当我使用 myString.c_str(); 时它起作用了。例如调用函数时:Inject(dllPath.c_str(), hProcess);例如,当我试图“保存” LPCSTR 而不是调用它时:

LPCSTR dllPath;
dllPath = sDllPath.c_str();

Inject(dllPath, hProcess);

它没有用,但是我找到了一个非常抱歉这篇文章的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多