protected void ReadObjectData(IProcessAccessor a)
        {
            var m = a.ReadMemory(new IntPtr(DataPtr), Math.Min(64, DataSize1));

            if (m.Success)
            {
                ObjectData = Enumerable.Range(0, m.Data.Length / 4)
                             .Select(i => BitConverter.ToUInt32(m.Data, i * 4)).ToArray();
            }
        }
        public static string ReadString(IProcessAccessor a, uint addr)
        {
            var m = a.ReadMemory(new IntPtr(addr), 20);

            if (!m.Success)
            {
                return(null);
            }

            var len = BitConverter.ToInt32(m.Data, 16);

            if (len >= 16)
            {
                m = a.ReadMemory(new IntPtr(BitConverter.ToUInt32(m.Data, 0)), len);
            }

            if (!m.Success)
            {
                return(null);
            }

            return(Encoding.GetString(m.Data, 0, len));
        }
        public static string ReadStringZ(IProcessAccessor a, uint addr, int max)
        {
            var m = a.ReadMemory(new IntPtr(addr), max);

            if (!m.Success)
            {
                return(null);
            }

            var idx = Array.IndexOf(m.Data, (byte)0);
            var len = idx < 0 ? m.Data.Length : idx;

            return(Encoding.GetString(m.Data, 0, len));
        }