因此,我正在尝试为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;
}
您在main()下定义InjectDLL(),编译器自上而下,无法编译main(),因为它不知道InjectDLL()是什么。
要修复,请在main()上方定义InjectDLL()
strcat是不安全的,请改用strcat_s,不安全的功能已被弃用,您不应该再使用它们。