向Minecraft注入DLL(未定义InjectDLL?)

问题描述 投票:0回答:1

因此,我正在尝试为Minecraft创建DLL注入器,下面是我的尝试以及一些在线资源,旨在制作DLL注入器。我有以下错误,无法弄清为什么会出现:

'未找到注入DLL标识符''strcat不安全'

抱歉,如果这是一个菜鸟错误,我正在学习:(

而且,似乎Java是其运行语言,我是否必须为Minecraft使用Java注入器?

谢谢您的回答!

using namespace std;

char FileToInject[] = "37gHsZ.dll";
char ProcessName[] = "javaw.exe";
typedef HINSTANCE(*fpLoadLibrary)(char*);

int main()
{
    DWORD processId = NULL;

    PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) };
    HANDLE hProcSnap;

    while (!processId)
    {
        system("cls");
        cout << "(!) Locating the process: " << ProcessName << "... (!)\n";
        cout << "(!) Ensure Minecraft 1.7.10 is running (!)" << endl;
        hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

        if (Process32First(hProcSnap, &pe32))
        {
            do
            {
                if (!strcmp(pe32.szExeFile, ProcessName))
                {
                    processId = pe32.th32ProcessID;
                    break;
                }

            } 
            while (Process32Next(hProcSnap, &pe32));
        }
        Sleep(1000);
    }
    cout << "Located process: " << ProcessName << endl;

    while (!InjectDLL(processId))
    {
        system("cls");
        cout << "Classes failed to inject" << endl;
        Sleep(1000);
    }
    cout << "Classes loaded succesfuly\n" << endl;
    Sleep(500);
    cout << "Closing in 3 seconds" << endl;

    CloseHandle(hProcSnap);
    Sleep(5000);
    return 0;

}

bool InjectDLL(DWORD ProcessID)
{
    HANDLE hProc;
    LPVOID paramAddr;

    HINSTANCE hDLL = LoadLibrary("KERNEL32");

    fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDLL, "LoadLibraryA");

    hProc = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID);

    char dllPath[250] = "C:\\Recorder\\";

    strcat(dllPath, FileToInject);

    paramAddr = VirtualAllocEx(hProc, 0, strlen(dllPath) + 1, MEM_COMMIT, PAGE_READWRITE);
    bool memoryWritten = WriteProcessMemory(hProc, paramAddr, dllPath, strlen(dllPath) + 1, NULL);

    CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, paramAddr, 0, 0);

    CloseHandle(hProc);

    return memoryWritten;
}
java c++ dll code-injection minecraft
1个回答
0
投票

您在main()下定义InjectDLL(),编译器自上而下,无法编译main(),因为它不知道InjectDLL()是什么。

要修复,请在main()上方定义InjectDLL()

strcat是不安全的,请改用strcat_s,不安全的功能已被弃用,您不应该再使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.