Hans_Henrik Skrevet 20. september 2009 Del Skrevet 20. september 2009 kan noen komme med små/enkle WriteProcessMemory eksempler? (eller annen måte og endre memory i andre processer?) Lenke til kommentar
LostOblivion Skrevet 21. september 2009 Del Skrevet 21. september 2009 (endret) Burde flyttes til Win32. Endret 21. september 2009 av LostOblivion Lenke til kommentar
Bartil Skrevet 23. september 2009 Del Skrevet 23. september 2009 (endret) Lenge siden sist jeg gjorde dette :!: Anbefaler deg å studere koden grundig til du forstår den Sorry for at den ikke er kommentert... bare spør hvis du trenger hjelp til å forstå noe. (Visual Studio 2008) #include <iostream> #include <windows.h> #include <tlhelp32.h> DWORD FindProcess(WCHAR* szFileName) { DWORD dwProcessId = 0; PROCESSENTRY32 pe32; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot != INVALID_HANDLE_VALUE) { pe32.dwSize = sizeof(PROCESSENTRY32); BOOL loop = Process32First(hSnapshot, &pe32); while (loop) { if (!wcscmp(pe32.szExeFile, szFileName)) { dwProcessId = pe32.th32ProcessID; break; } loop = Process32Next(hSnapshot, &pe32); } CloseHandle(hSnapshot); } return dwProcessId; } int main() { using namespace std; DWORD dwProcessId = FindProcess(L"firefox.exe"); if (dwProcessId) { HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION, false, dwProcessId); if (hProcess) { LPVOID lpAddress = (LPVOID)0x00400000; int buffer = 5; DWORD oldprotect = 0; VirtualProtectEx(hProcess, lpAddress, sizeof(buffer), PAGE_EXECUTE_READWRITE, &oldprotect); if (!WriteProcessMemory(hProcess, lpAddress, &buffer, sizeof(buffer), NULL)) cout << "WriteProcessMemory failed: Error " << GetLastError() << endl; VirtualProtectEx(hProcess, lpAddress, sizeof(buffer), oldprotect, NULL); } else cout << "Cannot open process. Error: " << GetLastError() << endl; CloseHandle(hProcess); } else cout << "FindProcess failed (processid = 0).\n"; cin.ignore('\n', 255); return 0; } En annen måte er å injecte en dll i prosessen og skifte på minne direkte. F. eks: *(DWORD*)0x00400000 = 50; Endret 23. september 2009 av Bartil Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå