/// <summary> /// Чтение смещений в файле /// </summary> /// <param name="Section">Секция</param> /// <param name="Key">Ключ</param> /// <param name="FileInfo">Имя файла</param> /// <returns></returns> public static int GetReadOffset(string Section, string Key, FileInfo FileInfo) { StringBuilder Offset = new StringBuilder(255); KernelAPI.GetPrivateProfileString(Section, Key, "", Offset, 255, FileInfo.FullName); return(int.Parse(Offset.ToString())); }
/// <summary> /// Чтение байтов /// </summary> /// <param name="ProcessOffset">Смещение</param> /// <param name="ProcessSize">Размер процесса</param> /// <returns></returns> protected byte[] ReadBytes(HANDLE ProcessOffset, DWORD ProcessSize) { byte[] Buffer = new byte[ProcessSize]; KernelAPI.ReadProcessMemory(ProcessHandle, ProcessOffset, Buffer, ProcessSize, 0); return(Buffer); }
/// <summary> /// Получение хандла с получением загруженных модулей процесса /// </summary> /// <param name="ProcessName">Имя процесса</param> /// <param name="Modules">Колекция модулей</param> public HMemory(string ProcessName, out Dictionary <string, HANDLE> Modules, ProcessAccess ProcessAccess) { this.ProcessName = ProcessName; this.ProcessAccess = ProcessAccess; ProcessMemory = Process.GetProcessesByName(ProcessName); if (IsProcessActive()) { ProcessHandle = KernelAPI.OpenProcess(ProcessAccess, false, ProcessMemory[0].Id); ProcessWindowHandle = ProcessMemory[0].MainWindowHandle; Modules = GetProcessModule(); } else { throw new Exception("Процесс не запущен!"); } }
/// <summary> /// Запись байтов /// </summary> /// <param name="ProcessOffset">Смещение</param> /// <param name="ProcessBytes">Байты процесса</param> /// <returns></returns> protected bool WriteBytes(HANDLE ProcessOffset, byte[] ProcessBytes) => KernelAPI.WriteProcessMemory(ProcessHandle, ProcessOffset, ProcessBytes, ProcessBytes.Length, 0);