Ejemplo n.º 1
0
        public void Run(MemoryReader reader, IpcChannel channel)
        {
            var o = reader.FindOffset(_pattern).Cast <int?>().FirstOrDefault();

            if (o == null)
            {
                channel.LogError("Could not find system message table");
                return;
            }

            var count = reader.Read <uint>((int)o + _pattern.TakeWhile(x => x != null).Count());
            var func  = reader.GetDelegate <GetMessageNameFunc>((int)o);
            var arr   = Enumerable.Range(0, (int)count).Select(x => (ushort)x).Select(
                x => Tuple.Create(x, Marshal.PtrToStringUni(func(x)))).ToArray();

            channel.LogBasic("Found {0} system messages", arr.Length);

            channel.WriteSystemMessages(arr);
        }
Ejemplo n.º 2
0
        static uint?ReadVersion(MemoryReader reader, int offset)
        {
            var off = reader.ReadOffset(offset);

            return(reader.IsInRange(off) ? (uint?)reader.Read <uint>(off) : null);
        }
        static uint?ReadVersion(MemoryReader reader, byte?[] pattern, int offset)
        {
            var off = reader.ReadOffset(offset + pattern.TakeWhile(x => x != null).Count());

            return(reader.IsInRange(off) ? (uint?)reader.Read <uint>(off) : null);
        }