Code:
using System.Runtime.InteropServices;
public class ReadWritingMemory {
[Flags()]
public enum ProcessAccessType {
PROCESS_TERMINATE = 1,
PROCESS_CREATE_THREAD = 2,
PROCESS_SET_SESSIONID = 4,
PROCESS_VM_OPERATION = 8,
PROCESS_VM_READ = 16,
PROCESS_VM_WRITE = 32,
PROCESS_DUP_HANDLE = 64,
PROCESS_CREATE_PROCESS = 128,
PROCESS_SET_QUOTA = 256,
PROCESS_SET_INFORMATION = 512,
PROCESS_QUERY_INFORMATION = 1024,
}
[DllImport("kernel32.dll")]
public static IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId) {
}
[DllImport("kernel32.dll")]
public static Int32 CloseHandle(IntPtr hObject) {
}
[DllImport("kernel32.dll")]
public static Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, void <, void In, void Out, void Greater, byte[] buffer, UInt32 size, ref IntPtr lpNumberOfBytesRead) {
}
[DllImport("kernel32.dll")]
public static Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, void <, void In, void Out, void Greater, byte[] buffer, UInt32 size, ref IntPtr lpNumberOfBytesWritten) {
}
public static void WriteLong(string ProcessName, int Address, long Value, int nsize) {
if (ProcessName.EndsWith(".exe")) {
ProcessName = ProcessName.Replace(".exe", "");
}
Process[] processesByName = Process.GetProcessesByName(ProcessName);
if ((processesByName.Length == 0)) {
MessageBox.Show((ProcessName + " n\'est pas ouvert !"));
}
else {
IntPtr ptr = ((IntPtr)(OpenProcess(127231, 0, processesByName[0].Id)));
if ((ptr == IntPtr.Zero)) {
MessageBox.Show(("Ouverture rat\\x00e9e de : "
+ (ProcessName + "!")));
}
else {
int lpBaseAddress = Address;
long lpBuffer = Value;
int lpNumberOfBytesWritten = 0;
WriteProcessMemory3(((int)(ptr)), lpBaseAddress, lpBuffer, nsize, lpNumberOfBytesWritten);
}
}
}
[DllImport("kernel32.dll", EntryPoint="WriteProcessMemory")]
private static extern int WriteProcessMemory1(int hProcess, int lpBaseAddress, ref int lpBuffer, int nSize, ref int lpNumberOfBytesWritten);
[DllImport("kernel32.dll", EntryPoint="WriteProcessMemory")]
private static extern float WriteProcessMemory2(int hProcess, int lpBaseAddress, ref float lpBuffer, int nSize, ref int lpNumberOfBytesWritten);
[DllImport("kernel32.dll", EntryPoint="WriteProcessMemory")]
private static extern long WriteProcessMemory3(int hProcess, int lpBaseAddress, ref long lpBuffer, int nSize, ref int lpNumberOfBytesWritten);
private const int PROCESS_ALL_ACCESS = 127231;
}