Results 1 to 1 of 1
  1. #1
    Grooguz
    Grooguz is offline
    BanHammer Holder
    Grooguz's Avatar
    Join Date
    2010 May
    Posts
    678
    Thanks
    152
    Thanked 537 Times in 167 Posts
    Rep Power
    8

    How to Read and Write to the Process Memory

    Create new Class
    This is The MemoryWrite / Read Class
    using System;
    using System.Diagnostics;
    using System.Management;
    using System.Runtime.InteropServices;

    namespace ProcessMemoryReaderLib
    {
    /// <summary>
    /// </summary>
    class ProcessMemoryReaderApi
    {
    [Flags]
    public enum ProcessAccessType
    {
    PROCESS_TERMINATE = (0x0001),
    PROCESS_CREATE_THREAD = (0x0002),
    PROCESS_SET_SESSIONID = (0x0004),
    PROCESS_VM_OPERATION = (0x0008),
    PROCESS_VM_READ = (0x0010),
    PROCESS_VM_WRITE = (0x0020),
    PROCESS_DUP_HANDLE = (0x0040),
    PROCESS_CREATE_PROCESS = (0x0080),
    PROCESS_SET_QUOTA = (0x0100),
    PROCESS_SET_INFORMATION = (0x0200),
    PROCESS_QUERY_INFORMATION = (0x0400)
    }

    [DllImport("kernel32.dll")]
    public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId);


    [DllImport("kernel32.dll")]
    public static extern Int32 CloseHandle(IntPtr hObject);


    [DllImport("kernel32.dll")]
    public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);


    [DllImport("kernel32.dll")]
    public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);

    }

    public class ProcessMemoryReader
    {

    public ProcessMemoryReader()
    {
    }

    /// <summary>
    /// </summary>
    public Process ReadProcess
    {
    get
    {
    return m_ReadProcess;
    }
    set
    {
    m_ReadProcess = value;
    }
    }

    private Process m_ReadProcess = null;

    private IntPtr m_hProcess = IntPtr.Zero;

    public void OpenProcess()
    {
    ProcessMemoryReaderApi.ProcessAccessType access;
    access = ProcessMemoryReaderApi.ProcessAccessType.PROCESS_V M_READ
    | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_V M_WRITE
    | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_V M_OPERATION;
    m_hProcess = ProcessMemoryReaderApi.OpenProcess((uint)access, 1, (uint)m_ReadProcess.Id);
    }

    public void CloseHandle()
    {
    int iRetValue;
    iRetValue = ProcessMemoryReaderApi.CloseHandle(m_hProcess);
    if (iRetValue == 0)
    throw new Exception("closehandle failed");
    }

    public byte[] ReadProcessMemory(IntPtr MemoryAddress, uint bytesToRead, out int bytesRead)
    {
    byte[] buffer = new byte[bytesToRead];

    IntPtr ptrBytesRead;
    ProcessMemoryReaderApi.ReadProcessMemory(m_hProces s, MemoryAddress, buffer, bytesToRead, out ptrBytesRead);

    bytesRead = ptrBytesRead.ToInt32();

    return buffer;
    }

    public void WriteProcessMemory(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten)
    {
    IntPtr ptrBytesWritten;
    ProcessMemoryReaderApi.WriteProcessMemory(m_hProce ss, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);

    bytesWritten = ptrBytesWritten.ToInt32();
    }





    }
    }

    Now Go to your Form
    After:
    Code:
    public partial class FormName : Form 
    {
    add this
    Code:
    ProcessMemoryReaderLib.ProcessMemoryReader preader = new ProcessMemoryReaderLib.ProcessMemoryReader();
    Now you can Write the Memory Like This
    Code:
    System.Diagnostics.Process[] MS = System.Diagnostics.Process.GetProcessesByName("SomeGame");
                    if (MS.Length != 0)
                    {
                        preader.ReadProcess = MS[0];
                        preader.OpenProcess();
                        int thosewrote;
                        byte[] vals = { 0x0F, 0x84, 0xF1, 0x20, 0x00, 0x00 };
                        preader.WriteProcessMemory((IntPtr)0x009343FC, vals , out thosewrote);
                    }
    Bytes to Write = 0F & 84 & F1 & 20 & 00 & 00
    The Address that will it be wrote to = 009343FC

  2. The Following User Says Thank You to Grooguz For This Useful Post:


Similar Threads

  1. Replies: 1
    Last Post: 2013-03-06, 09:59 PM
  2. Simple VB Write/Read Memory Class
    By Dwar in forum VB, .NET Framework
    Replies: 3
    Last Post: 2012-07-22, 05:11 PM
  3. [Process, Services & Network] Process Hacker
    By wildspirit in forum Files & Tools
    Replies: 0
    Last Post: 2011-11-09, 05:00 AM
  4. [Snippet] Write bytes to memory
    By Dwar in forum Delphi
    Replies: 0
    Last Post: 2010-11-25, 09:15 AM
Visitors found this page by searching for:

c# writeprocessmemory

writeprocessmemory c#

c# writeprocessprocessmemoryreaderapi.readprocessmemoryc# writeprocessmemory classc# read write process memoryc# openProcessc# read process gamec# open process trainerc# warcraft openprocess file rights read writec# read process memoryWrite To Memory dll c readwrite process memory vb.netkernel32.dll memory reading c read write process memory vb.netvb .net read process memory writec# writememoryprocesscode to read writing process memory.vbc# memory kernel32.dllc# ram kernel32.dllprocess momery reading or writing in vb.netwrite process memmory vbread and write process memory visual basic 2010 tutorialprocessmemoryreaderlib.processmemoryreaderc# reading writing process memory

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •