Esempio n. 1
0
        protected ExternalClass(ExternalMemorySharp emsInstance, UIntPtr address)
        {
            Ems         = emsInstance ?? throw new NullReferenceException("emsInstance Can't be null, Use 'ExternalMemorySharp.MainEms' instead.");
            BaseAddress = address;

            // ReSharper disable once VirtualMemberCallInConstructor
            InitOffsets();

            // Get All Offset Props
            Offsets = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
                      .Where(f => f.FieldType == typeof(ExternalOffset) || f.FieldType.IsSubclassOfRawGeneric(typeof(ExternalOffset <>)))
                      .Select(f =>
            {
                var curOffset = (ExternalOffset)f.GetValue(this);

                // Set Info
                curOffset.Name = f.Name;
                curOffset.Ems  = Ems;

                // If It's 32bit Game Then Pointer Is 4Byte
                if (curOffset.OffsetType == OffsetType.UIntPtr && !curOffset.IsGame64Bit)
                {
                    curOffset.Size = 0x4;
                }
                else if (curOffset.OffsetType == OffsetType.ExternalClass && curOffset.ExternalClassIsPointer)
                {
                    curOffset.Size = curOffset.IsGame64Bit ? 0x8 : 0x4;
                }

                return(curOffset);
            })
                      .ToList();

            // Re order Offsets
            List <ExternalOffset> offsetsList = Offsets
                                                .Where(f => f != null)
                                                .ToList();

            // Sort By Dependencies
            offsetsList = offsetsList.OrderBy(off => off.Offset).ToList();
            List <ExternalOffset> offsets = offsetsList;

            Offsets = offsetsList.Sort(off => offsets.Where(offset => offset == off.Dependency));

            // Get Size Of Class
            ClassSize = Utils.GetDependenciesSize(ExternalOffset.None, Offsets);
        }
Esempio n. 2
0
 /// <summary>
 /// Update Memory Reader/Writer
 /// </summary>
 /// <param name="externalMemorySharp">New External Memory Sharp Class That's Will Used To Read And Write</param>
 public void UpdateReader(ExternalMemorySharp externalMemorySharp)
 {
     Ems = externalMemorySharp;
 }