在C ++中出现DLL注入器错误

问题描述

我正在制造DLL注射器。一个非常简单的应用程序:控制台应用程序,输入DLL,输入过程。但我在第26行遇到错误:

LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");

有人可以帮我吗?

#include<Windows.h> //DWORD
#include <iostream>
#include <string>
#include <psapi.h> //EnumProcessModules
#include <VersionHelpers.h>
#include <atlstr.h> // CString

#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)

BOOL InjectDLL(DWORD ProcessID)
{
    LPCSTR DLL_PATH = "dll file here";
    LPVOID LoadLibAddy,RemoteString;

    if (!ProcessID)
        return false;

    HANDLE Proc = OpenProcess(CREATE_THREAD_ACCESS,FALSE,ProcessID);

    if (!Proc)
    {
        std::cout << "OpenProcess() failed: " << GetLastError() << std::endl;
        return false;
    }

    LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");

    RemoteString = (LPVOID)VirtualAllocEx(Proc,NULL,strlen(DLL_PATH) + 1,MEM_COMMIT,PAGE_READWRITE);
    WriteProcessMemory(Proc,RemoteString,(LPVOID)DLL_PATH,strlen(DLL_PATH)+1,NULL);
    CreateRemoteThread(Proc,(LPTHREAD_START_ROUTINE)LoadLibAddy,NULL);

    CloseHandle(Proc);

    return true;
...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)