Beispiel #1
0
        /// <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()));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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("Процесс не запущен!");
            }
        }
Beispiel #4
0
 /// <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);