Показать сообщение отдельно
Старый 31.07.2010, 10:48   #102
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от Konctantin Посмотреть сообщение
Ну это все, как говорится "у каждого свои методы", я ограничился таким кодом:
Код:
private byte[] GetLocales()
{
	using (var mr = new ProcessMemoryReader("wow"))
	{
		return mr.Read(0x00C5DE88, 4);
	}
}
У меня почти так же

Код:
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;

namespace Wlp
{
    public class SessionInfoReader
    {
        private const string ProcessName = "Wow";

        public static int ClientBuild
        {
            get
            {
                var p = ProcessMemoryReader.GetProcessByName(ProcessName);

                if (File.Exists(p.MainModule.FileName))
                {
                    var fi = FileVersionInfo.GetVersionInfo(p.MainModule.FileName);
                    return fi.FilePrivatePart;
                }
                else
                {
                    Logger.Instance.ErrorFormat("{0} not found or missing required permissions!", ProcessName);
                    return -1;
                }
            }
        }

        public static byte[] GetSessionKey(uint offset)
        {
            using (var pmr = new ProcessMemoryReader(ProcessName))
            {
                return pmr.Read(pmr.ReadUInt(offset) + 0x508, 40);
            }
        }

        public static byte[] GetWardenSeedKey(uint offset)
        {
            using (var pmr = new ProcessMemoryReader(ProcessName))
            {
                return pmr.Read(pmr.ReadUInt(offset) + 0x04, 16);
            }
        }

        public static byte[] GetWardenRC4State(uint offset)
        {
            using (var pmr = new ProcessMemoryReader(ProcessName))
            {
                return pmr.Read(pmr.ReadUInt(offset) + 0x20, 0x204);
            }
        }

        public static byte[] GetLocaleBytes(uint offset)
        {
            using (var pmr = new ProcessMemoryReader(ProcessName))
            {
                return pmr.Read(offset, 4);
            }
        }
    }
}

Последний раз редактировалось TOM_RUS; 31.07.2010 в 14:13.
TOM_RUS вне форума   Ответить с цитированием