ProcessMemoryReaderLib.dll - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите, пожалуйста, найти данную библиотеку. Я нашел что-то вроде похожее:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
 
namespace ProcessMemoryReaderLib
{
    /// <summary> 
    /// ProcessMemoryReader is a class that enables direct reading a process memory 
    /// </summary> 
    class ProcessMemoryReaderApi
    {
        // constants information can be found in <winnt.h> 
        [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)
        }
 
        // function declarations are found in the MSDN and in <winbase.h>  
 
        //        HANDLE OpenProcess( 
        //            DWORD dwDesiredAccess,  // access flag 
        //            BOOL bInheritHandle,    // handle inheritance option 
        //            DWORD dwProcessId       // process identifier 
        //            ); 
        [DllImport("kernel32.dll")]
        public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId);
 
        //        BOOL CloseHandle( 
        //            HANDLE hObject   // handle to object 
        //            ); 
        [DllImport("kernel32.dll")]
        public static extern Int32 CloseHandle(IntPtr hObject);
 
        //        BOOL ReadProcessMemory( 
        //            HANDLE hProcess,              // handle to the process 
        //            LPCVOID lpBaseAddress,        // base of memory area 
        //            LPVOID lpBuffer,              // data buffer 
        //            SIZE_T nSize,                 // number of bytes to read 
        //            SIZE_T * lpNumberOfBytesRead  // number of bytes read 
        //            ); 
        [DllImport("kernel32.dll")]
        public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);
 
        //        BOOL WriteProcessMemory( 
        //            HANDLE hProcess,                // handle to process 
        //            LPVOID lpBaseAddress,           // base of memory area 
        //            LPCVOID lpBuffer,               // data buffer 
        //            SIZE_T nSize,                   // count of bytes to write 
        //            SIZE_T * lpNumberOfBytesWritten // count of bytes written 
        //            ); 
        [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>     
        /// Process from which to read         
        /// </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()
        {
            //            m_hProcess = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ, 1, (uint)m_ReadProcess.Id); 
            ProcessMemoryReaderApi.ProcessAccessType access;
            access = ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_READ
                | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_WRITE
                | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_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_hProcess, 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_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);
 
            bytesWritten = ptrBytesWritten.ToInt32();
        }

    }
}
Но здесь нет функций ReadInt, ReadFloat, ReadMultiLevelPointer Может у кого есть?

Решение задачи: «ProcessMemoryReaderLib.dll»

textual
Листинг программы
public T ReadMulti<T>(IntPtr address, int[] offsets) where T : struct {

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5