Gå til innhold

enkel WriteProcessMemory exempel?


Anbefalte innlegg

Videoannonse
Annonse

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 av Bartil
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...