コード例 #1
0
        public void ScanRegions()
        {
            InitTests();

            Assert.AreEqual(0, actionLogbook.Count);

            sigScan.Enable();

            Assert.AreEqual(reader.Regions.Count(x => x.Size < 0x1000000), actionLogbook.Count);

            int i = 0;

            foreach (var region in reader.Regions.Where(x => x.Size < 0x1000000))
            {
                Assert.AreEqual(region.Size, actionLogbook[i].Size);
                Assert.AreEqual(region.BaseAddress, actionLogbook[i].Address);
                Assert.AreEqual(region.Size, region.Data.Length);
                i++;
            }

            sigScan.Disable();

            Assert.AreEqual(reader.Regions.Count(x => x.Size < 0x1000000), actionLogbook.Count);

            foreach (var region in reader.Regions.Where(x => x.Size < 0x1000000))
            {
                Assert.AreEqual(0, region.Data.Length);
            }
        }
コード例 #2
0
        private void AdvancedMiner()
        {
            var reader = new MemoryReader();

            reader.Open(ActiveProcess, true);
            miner = new MemoryProvider(reader);

            var scanner = new MemorySignatureScanner(reader);

            scanner.Enable();
            var staticAddr   = scanner.Scan <int>(MemoryRegionType.READWRITE, "75E98B0D????????5F5E");
            var staticOffset = scanner.Scan <byte>(MemoryRegionType.READWRITE, "578B7E??8D04973BF8742F");
            var ptr1Offset   = 0;
            var spdOffset    = scanner.Scan <byte>(MemoryRegionType.READWRITE, "DEC9D947??DECADEC1D955FC");
            var cxOffset     = scanner.Scan <byte>(MemoryRegionType.READWRITE, "F30F5C4E??F30F59C0F30F59");
            var cyOffset     = cxOffset + 4; // scanner.Scan<byte>(MemoryRegionType.READWRITE, "5F8B0A890E8B4A??894EXX8B4AXX894EXX");
            var czOffset     = cxOffset + 8; // scanner.Scan<byte>(MemoryRegionType.READWRITE, "8B4A08??894EXXD9420CD95E0C");

            scanner.Disable();

            var carsPool = new MemoryPool("Cars", MemoryAddress.StaticAbsolute, staticAddr, new int[] { 0, staticOffset }, 64 * 4);

            miner.Add(carsPool);

            for (int k = 0; k < 64; k++)
            {
                var carPool = new MemoryPool("Car " + k, MemoryAddress.Dynamic, carsPool, k * 4, 512);
                carPool.Add(new MemoryField <float>("Speed", MemoryAddress.Dynamic, carPool, spdOffset, 4));
                carPool.Add(new MemoryField <float>("CoordinateX", MemoryAddress.Dynamic, carPool, cxOffset, 4));
                carPool.Add(new MemoryField <float>("CoordinateY", MemoryAddress.Dynamic, carPool, cyOffset, 4));
                carPool.Add(new MemoryField <float>("CoordinateZ", MemoryAddress.Dynamic, carPool, czOffset, 4));

                miner.Add(carPool);

                Cars.Add(new Ets2Car {
                    ID = k
                });
            }
        }