bornman Posted February 3, 2020 at 02:43 PM Share Posted February 3, 2020 at 02:43 PM Olá, estou aprendendo sobre injeção em processos e estou tentando criar um injetor de dll em C++, utilizando WriteProcessMemory e CreateRemoteThread, as funções não retornam erros porém a dll não é injetada. Segue o código: #include "pch.h" #include <iostream> #include "Injections.h" int main(int argc, char *argv[]) { const char *dllPath = "example.dll"; DWORD processId = getProcID(L"process.exe"); HANDLE procHandle = getProcHandle(processId); bool inj = injectDll(procHandle, dllPath); CloseHandle(procHandle); getchar(); return 0; } #include "pch.h" #include "Injections.h" #include <iostream> DWORD getProcID(const wchar_t* procName) { DWORD procId = 0; HANDLE hSnap = (CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)); if (hSnap != INVALID_HANDLE_VALUE) { PROCESSENTRY32 procEntry; procEntry.dwSize = sizeof(procEntry); if (Process32First(hSnap, &procEntry)) { do { if (!_wcsicmp(procEntry.szExeFile, procName)) { procId = procEntry.th32ProcessID; break; } } while (Process32Next(hSnap, &procEntry)); } } CloseHandle(hSnap); return procId; } HANDLE getProcHandle(DWORD pid) { HANDLE h = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid); if (h == NULL) { std::cout << "Can't get process handle!" << std::endl; exit(-1); } return h; } bool injectDll(HANDLE procHandle, const char *dllPath) { LPVOID loadPath = (LPVOID)VirtualAllocEx(procHandle, 0, strlen(dllPath)+1, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); if (loadPath == NULL) { std::cout << "Can't allocate memory!" << std::endl; exit(-1); } int n = WriteProcessMemory(procHandle, loadPath, dllPath, strlen(dllPath)+1, NULL); if (n == 0) { std::cout << "Couldn't write memory!" << std::endl; } HANDLE thread = CreateRemoteThread(procHandle, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, loadPath, 0, NULL); if (thread != NULL) { std::cout << "Injection Sucessfull!" << std::endl; return true; } exit(-1); } Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.