コード例 #1
0
        static EnmityManager()
        {
            var pf = new PatternFinder(Core.Memory);

            EnmityBasePtr  = pf.Find("Search 4C 8D 3D ? ? ? ? 66 90 8B 03 48 8D 0D ? ? ? ? 41 89 46 FC 45 33 C0 8B 43 04 Add 3 TraceRelative");
            EnmityCountPtr = pf.Find("Search 89 05 ? ? ? ? 48 8B FA 40 38 32 76 78 Add 2 TraceRelative");
        }
コード例 #2
0
        public static void OpenRepair()
        {
            var patternFinder = new PatternFinder(Core.Memory);
            var off           = patternFinder.Find("4C 8D 0D ? ? ? ? 45 33 C0 33 D2 48 8B C8 E8 ? ? ? ? Add 3 TraceRelative");
            var func          = patternFinder.Find("48 89 5C 24 ? 57 48 83 EC ? 88 51 ? 49 8B F9");

            Core.Memory.CallInjected64 <IntPtr>(func, AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, off);
        }
コード例 #3
0
ファイル: EnmityManager.cs プロジェクト: Fryheit/Kefka
    static EnmityManager()
    {
        var pf = new PatternFinder(Core.Memory);

        TargetEnmityBasePtr = pf.Find("Search 4C 8D 3D ? ? ? ? 66 90 8B 03 48 8D 0D ? ? ? ? 41 89 46 FC 45 33 C0 8B 43 04 Add 3 TraceRelative");
        EnmityCountPtr      = pf.Find("Search 89 05 ? ? ? ? 48 8B FA 40 38 32 76 78 Add 2 TraceRelative");

        MyEnmityCountPtr = pf.Find("Search  44 39 3D ? ? ? ? 41 8B EF  Add 3 TraceRelative");
        MyEnmityListPtr  = pf.Find("Search 48 8D 0D ? ? ? ? E8 ? ? ? ? 84 C0 74 18 8B 57 74  Add 3 TraceRelative");
    }
コード例 #4
0
        private int getAgent()
        {
            var    patternFinder = new PatternFinder(Core.Memory);
            IntPtr agentVtable   = patternFinder.Find("48 8D 05 ? ? ? ? 48 89 51 ? 48 89 01 48 8B F9 48 8D 05 ? ? ? ? 4C 89 79 ? Add 3 TraceRelative");

            return(AgentModule.FindAgentIdByVtable(agentVtable));
        }
コード例 #5
0
        protected override async Task <bool> RunAsync()
        {
            AtkAddonControl window = RaptureAtkUnitManager.GetWindowByName(_windowName);

            if (window == null)
            {
                PatternFinder patternFinder = new PatternFinder(Core.Memory);
                IntPtr        agentVtable   = patternFinder.Find(_agentOffset);
                int           agentId       = AgentModule.FindAgentIdByVtable(agentVtable);

                AgentModule.GetAgentInterfaceById(agentId).Toggle();
                await Coroutine.Wait(5000, () => RaptureAtkUnitManager.GetWindowByName(_windowName) != null);

                window = RaptureAtkUnitManager.GetWindowByName(_windowName);
            }

            if (window != null)
            {
                // Choose Dungeon
                window.SendAction(2, 3, 15, 4, (ulong)Dungeon - 1);
                await Coroutine.Sleep(250);

                // Register for Duty
                window.SendAction(1, 3, 14);
            }

            return(false);
        }
コード例 #6
0
 public static Task <IntPtr?> FindPattern(Pattern pattern, Process proc) =>
 Task <IntPtr?> .Factory.StartNew(() => {
     using (var patternFinder = new PatternFinder(proc)) {
         var ptr = patternFinder.Find(pattern.PatternString);
         return(ptr);
     }
 });
コード例 #7
0
ファイル: OffsetManager.cs プロジェクト: Fryheit/DeepDive3
        private static IntPtr ParseField(FieldInfo field, PatternFinder pf)
        {
            var offset = (OffsetAttribute)Attribute.GetCustomAttributes(field, typeof(OffsetAttribute))
                         .FirstOrDefault();
            var valcn = (OffsetValueCN)Attribute.GetCustomAttributes(field, typeof(OffsetValueCN))
                        .FirstOrDefault();
            var valna = (OffsetValueNA)Attribute.GetCustomAttributes(field, typeof(OffsetValueNA))
                        .FirstOrDefault();

            IntPtr results;

            if (Constants.Lang == Language.Chn)
            {
                if (valcn != null)
                {
                    return((IntPtr)valcn.Value);
                }
                if (offset == null)
                {
                    return(IntPtr.Zero);
                }
                lock (Core.Memory)
                {
                    results = pf.Find(offset.PatternCN);
                }
            }
            else
            {
                if (valna != null)
                {
                    return((IntPtr)valna.Value);
                }
                if (offset == null)
                {
                    return(IntPtr.Zero);
                }
                lock (Core.Memory)
                {
                    results = pf.Find(offset.Pattern);
                }
            }

            Logger.Info("[OffsetManager][{0:,27}] {1}", field.Name, results.ToString("X"));

            return(results);
        }
コード例 #8
0
ファイル: Repair.cs プロジェクト: nt153133/LlamaLibrary
        public override void OnInitialize()
        {
            TreeRoot.OnStart += OnBotStart;
            TreeRoot.OnStop  += OnBotStop;
            Repairing         = false;
            var patternFinder = new PatternFinder(Core.Memory);
            var off           = patternFinder.Find("4C 8D 0D ? ? ? ? 45 33 C0 33 D2 48 8B C8 E8 ? ? ? ? Add 3 TraceRelative");
            var func          = patternFinder.Find("48 89 5C 24 ? 57 48 83 EC ? 88 51 ? 49 8B F9");
            var vtable        = patternFinder.Find("48 8D 05 ? ? ? ? 48 89 03 B9 ? ? ? ? 4C 89 43 ? Add 3 TraceRelative");

            var repairAgent = AgentModule.FindAgentIdByVtable(vtable);

            //Core.Memory.CallInjected64<IntPtr>(func, AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, off);
            Log($"AgentId {AgentId} Offset {off.ToInt64():X} Func {func.ToInt64():X}");

            AgentId = repairAgent;

            _root = new Decorator(r => Repairing, RepairBehavior);
            //_root = new Decorator(r => Repairing, new ActionAlwaysSucceed());
        }
コード例 #9
0
ファイル: Offsets.cs プロジェクト: akira0245/Kombatant
        private static void InitializeValue(ref IntPtr value, string name, string pattern, int offset = 0)
        {
            PatternFinder patternFinder = new PatternFinder(Core.Memory);

            try
            {
                value = patternFinder.Find(pattern) + offset;
                LogHelper.Instance.Log($"[Offset] Found {name} at {value.ToInt64():X}.");
            }
            catch (Exception e)
            {
                LogHelper.Instance.Log($"[Offset] {name} not found. ");
            }
        }
コード例 #10
0
ファイル: GatherTest.cs プロジェクト: Angles24/LlamaLibrary
        public async Task testMine()
        {
            var    patternFinder   = new PatternFinder(Core.Memory);
            IntPtr AnimationLocked = patternFinder.Find("48 8D 0D ?? ?? ?? ?? BA ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 8B ?? ?? ?? ?? ?? 45 33 C9 44 8B C7 89 BB ?? ?? ?? ?? Add 3 TraceRelative");

            var GatherLock = Core.Memory.Read <uint>(AnimationLocked + 0x2A);

            Log("in Test Gather");
            if (GatheringManager.WindowOpen)
            {
                GatheringItem items = GatheringManager.GatheringWindowItems.FirstOrDefault(i => i.IsFilled && i.CanGather);

                if (Core.Me.CurrentGP >= 500)
                {
                    await Coroutine.Wait(5000, () => ActionManager.CanCast(241, Core.Me));

                    ActionManager.DoAction(241, Core.Me);
                    await Coroutine.Sleep(2500);
                }

                /*
                 * if (Core.Me.CurrentGP >= 250)
                 * {
                 *  await Coroutine.Wait(5000, () => ActionManager.CanCast(4587, Core.Me));
                 *  ActionManager.DoAction(4587, Core.Me);
                 *  await Coroutine.Sleep(2500);
                 * }
                 */

                Log($"Gathering: {items}");

                while (GatheringManager.SwingsRemaining > 0 && GatheringManager.WindowOpen)
                {
                    if (Core.Me.CurrentGP >= 100)
                    {
                        await Coroutine.Wait(5000, () => ActionManager.CanCast(272, Core.Me));

                        ActionManager.DoAction(272, Core.Me);
                        await Coroutine.Sleep(2500);
                    }
                    await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0);

                    items?.GatherItem();
                    await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) != 0);

                    await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0);
                }
            }
        }
コード例 #11
0
ファイル: GatherTest.cs プロジェクト: Angles24/LlamaLibrary
        public async Task testGather()
        {
            var    patternFinder   = new PatternFinder(Core.Memory);
            IntPtr AnimationLocked = patternFinder.Find("48 8D 0D ?? ?? ?? ?? BA ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 8B ?? ?? ?? ?? ?? 45 33 C9 44 8B C7 89 BB ?? ?? ?? ?? Add 3 TraceRelative");

            var GatherLock = Core.Memory.Read <uint>(AnimationLocked + 0x2A);

            Log("in Test Gather");
            if (GatheringManager.WindowOpen)
            {
                GatheringItem items = GatheringManager.GatheringWindowItems.FirstOrDefault(i => i.IsFilled && i.CanGather);

                Log($"Gathering: {items}");

                while (GatheringManager.SwingsRemaining > 0)
                {
                    items.GatherItem();
                    await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) != 0);

                    await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0);
                }
            }
        }
コード例 #12
0
        private static IntPtr ParseField(FieldInfo field, PatternFinder pf)
        {
            var offset = (OffsetAttribute)Attribute.GetCustomAttributes(field, typeof(OffsetAttribute))
                         .FirstOrDefault();
            var valcn = (OffsetValueCN)Attribute.GetCustomAttributes(field, typeof(OffsetValueCN))
                        .FirstOrDefault();
            var valna = (OffsetValueNA)Attribute.GetCustomAttributes(field, typeof(OffsetValueNA))
                        .FirstOrDefault();

            var result = IntPtr.Zero;
            var lang   = (Language)typeof(DataManager).GetFields(BindingFlags.Static | BindingFlags.NonPublic)
                         .First(i => i.FieldType == typeof(Language)).GetValue(null);

            if (lang == Language.Chn)
            {
                if (valcn != null)
                {
                    return((IntPtr)valcn.Value);
                }
                if (offset == null)
                {
                    return(IntPtr.Zero);
                }

                //var b1 = true;
                try
                {
                    result = pf.Find(offset.PatternCN);
                }
                catch (Exception e)
                {
                }
            }
            else
            {
                if (valna != null)
                {
                    return((IntPtr)valna.Value);
                }
                if (offset == null)
                {
                    return(IntPtr.Zero);
                }

                try
                {
                    result = pf.Find(offset.PatternCN);
                }
                catch (Exception e)
                {
                }
            }

            if (result == IntPtr.Zero)
            {
                if (field.DeclaringType != null && field.DeclaringType.IsNested)
                {
                    Log($"[{field.DeclaringType.DeclaringType.Name}:{field.Name:,27}] Not Found");
                }
                else
                {
                    Log($"[{field.DeclaringType.Name}:{field.Name:,27}] Not Found");
                }
            }

            if (!_debug)
            {
                return(result);
            }

            if (offset != null)
            {
                if (field.DeclaringType != null && field.DeclaringType.IsNested && field.FieldType != typeof(int))
                {
                    sb.AppendLine($"{field.DeclaringType.DeclaringType.Name}_{field.Name}, {offset.Pattern}");
                    //patterns.Add($"{field.DeclaringType.DeclaringType.Name}_{field.Name}", offset.Pattern);
                }
                else if (field.FieldType != typeof(int))
                {
                    sb.AppendLine($"{field.Name}, {offset.Pattern}");
                    //patterns.Add($"{field.Name}", offset.Pattern);
                }
            }

            if (valna != null)
            {
                sb.AppendLine($"{field.DeclaringType.Name},{field.Name},{valna}");
            }

            if (field.DeclaringType != null && field.DeclaringType.IsNested)
            {
                Log($"[{field.DeclaringType.DeclaringType.Name}:{field.Name:,27}] {result.ToInt64():X}");
            }
            else
            {
                Log($"[{field.DeclaringType.Name}:{field.Name:,27}] {result.ToInt64():X}");
            }


            return(result);
        }