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); } }
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 }); } }