public override IEnumerable<Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); if (flags != PointerScannerFlags.Calls) throw new NotImplementedException(string.Format("Haven't implemented support for scanning for {0} yet.", flags)); while (rdr.IsValid) { uint linAddrCall = rdr.Address.ToUInt32(); var opcode = rdr.ReadLeUInt32(); if ((opcode & 0x0F000000) == 0x0B000000) // BL { int offset = ((int)opcode << 8) >> 6; uint target = (uint)(linAddrCall + 8 + offset); if (knownLinAddresses.Contains(target)) yield return Address.Ptr32(linAddrCall); } } }
public override IEnumerable<Address> CreatePointerScanner(SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => (uint)a.ToLinear()).ToHashSet(); return new MipsPointerScanner32(rdr, knownLinAddresses, flags).Select(l => Address.Ptr32(l)); }
public override IEnumerable<Address> CreateInstructionScanner(SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); return new X86RealModePointerScanner(rdr, knownLinAddresses, flags).Select(li => map.MapLinearAddressToAddress(li)); }
public override IEnumerable<Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); return new M68kPointerScanner(rdr, knownLinAddresses, flags).Select(li => Address.Ptr32(li)); }
public virtual IEnumerable<Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownLinAddresses, PointerScannerFlags flags) { return mode.CreateInstructionScanner(map, rdr, knownLinAddresses, flags); }
public M68kPointerScanner(EndianImageReader rdr, HashSet <uint> knownLinAddresses, PointerScannerFlags flags) : base(rdr, knownLinAddresses, flags) { }
public override IEnumerable <Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); return(new M68kPointerScanner(rdr, knownLinAddresses, flags).Select(li => Address.Ptr32(li))); }
public override IEnumerable<Address> CreatePointerScanner( SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses .Select(a => a.ToLinear()) .ToHashSet(); return new PowerPcPointerScanner64(rdr, knownLinAddresses, flags) .Select(u => Address.Ptr64(u)); }
public PICPointerScanner(EndianImageReader rd, HashSet <uint> knownLinAddrs, PointerScannerFlags flags) : base(rd, knownLinAddrs, flags) { }
public override IEnumerable<Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { return new Arm32PointerScanner(rdr, knownAddresses.Select(a => a.ToUInt32()).ToHashSet(), flags) .Select(lin => Address.Ptr32(lin)); }
public IEnumerable <Address> CreatePointerScanner(SegmentMap map, ImageReader rdr, IEnumerable <Address> knownLinAddrs, PointerScannerFlags flags) { throw new NotImplementedException(); }
public abstract IEnumerable <Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags);
public PowerPcPointerScanner64(EndianImageReader rdr, HashSet <ulong> knownLinAddresses, PointerScannerFlags flags) : base(rdr, knownLinAddresses, flags) { }
public Z80PointerScanner(SegmentMap map, EndianImageReader rdr, HashSet <ushort> knownLinAddresses, PointerScannerFlags flags) : base(rdr, knownLinAddresses, flags) { this.map = map; this.rdr = rdr; this.knownLinAddresses = knownLinAddresses; this.flags = flags; }
public override PICPointerScanner CreatePointerScanner(EndianImageReader rdr, HashSet <uint> knownLinAddresses, PointerScannerFlags flags) => new PIC18PointerScanner(rdr, knownLinAddresses, flags);
public IEnumerable<Address> CreatePointerScanner( ImageMap imageMap, ImageReader rdr, IEnumerable<Address> address, PointerScannerFlags pointerScannerFlags) { return Architecture.CreatePointerScanner(imageMap, rdr, address, pointerScannerFlags); }
public abstract IEnumerable<Address> CreateInstructionScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags);
public PointerScanner(EndianImageReader rdr, HashSet <T> knownLinAddresses, PointerScannerFlags flags) { this.rdr = rdr; this.knownLinAddresses = knownLinAddresses; this.flags = flags; }
public virtual IEnumerable <Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable <Address> knownLinAddresses, PointerScannerFlags flags) { return(mode.CreateInstructionScanner(map, rdr, knownLinAddresses, flags)); }
/// <summary> /// Creates the PIC memory pointer scanner. /// </summary> /// <param name="rdr">The memory image reader.</param> /// <param name="knownLinAddresses">The known linear addresses.</param> /// <param name="flags">The flags.</param> /// <returns> /// The new pointer scanner. /// </returns> public abstract PICPointerScanner CreatePointerScanner(EndianImageReader rdr, HashSet <uint> knownLinAddresses, PointerScannerFlags flags);
public override IEnumerable <Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { throw new NotImplementedException(); }
public override IEnumerable<Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); if (flags != PointerScannerFlags.Calls) throw new NotImplementedException(string.Format("Haven't implemented support for scanning for {0} yet.", flags)); while (rdr.IsValid) { uint linAddrCall = rdr.Address.ToUInt32(); var opcode = rdr.ReadLeUInt32(); if ((opcode & 0x0F000000) == 0x0B000000) // BL { int offset = ((int)opcode << 8) >> 6; uint target = (uint)(linAddrCall + 8 + offset); if (knownLinAddresses.Contains(target)) yield return Address.Ptr32(linAddrCall); } } }
public override IEnumerable <Address> CreateInstructionScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt32()).ToHashSet(); return(new X86RealModePointerScanner(rdr, knownLinAddresses, flags).Select(li => map.MapLinearAddressToAddress(li))); }
public override IEnumerable <Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => a.ToUInt16()).ToHashSet(); return(new Z80PointerScanner(map, rdr, knownLinAddresses, flags).Select(li => Address.Ptr16(li))); }
public abstract IEnumerable<Address> CreatePointerScanner(SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags);
public override IEnumerable <Address> CreateInstructionScanner(ImageMap map, ImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => (ulong)a.ToLinear()).ToHashSet(); return(new X86PointerScanner64(rdr, knownLinAddresses, flags).Select(li => map.MapLinearAddressToAddress(li))); }
public override IEnumerable <Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { return(mode.CreateInstructionScanner(map, rdr, knownAddresses, flags)); }
public override abstract IEnumerable <Address> CreatePointerScanner( SegmentMap map, EndianImageReader rdr, IEnumerable <Address> addrs, PointerScannerFlags flags);
public abstract IEnumerable<Address> CreatePointerScanner( ImageMap map, ImageReader rdr, IEnumerable<Address> addrs, PointerScannerFlags flags);
public override IEnumerable <Address> CreatePointerScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => (uint)a.ToLinear()).ToHashSet(); return(new MipsPointerScanner32(rdr, knownLinAddresses, flags).Select(l => Address.Ptr32(l))); }
public IEnumerable<Address> CreatePointerScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownLinAddrs, PointerScannerFlags flags) { throw new NotImplementedException(); }
public abstract IEnumerable <Address> CreateInstructionScanner(SegmentMap map, EndianImageReader rdr, IEnumerable <Address> knownAddresses, PointerScannerFlags flags);
public override IEnumerable<Address> CreateInstructionScanner(ImageMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { var knownLinAddresses = knownAddresses.Select(a => (ulong)a.ToLinear()).ToHashSet(); return new X86PointerScanner64(rdr, knownLinAddresses, flags).Select(li => map.MapLinearAddressToAddress(li)); }
public X86PointerScanner32(ImageReader rdr, HashSet <uint> knownLinAddresses, PointerScannerFlags flags) : base(rdr, knownLinAddresses, flags) { }
public override abstract IEnumerable<Address> CreatePointerScanner( SegmentMap map, ImageReader rdr, IEnumerable<Address> addrs, PointerScannerFlags flags);
public override IEnumerable<Address> CreatePointerScanner(SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { return mode.CreateInstructionScanner(map, rdr, knownAddresses, flags); }
public override IEnumerable<Address> CreatePointerScanner(SegmentMap map, ImageReader rdr, IEnumerable<Address> knownAddresses, PointerScannerFlags flags) { throw new NotImplementedException(); }
public PowerPcPointerScanner(ImageReader rdr, HashSet <T> knownLinAddresses, PointerScannerFlags flags) : base(rdr, knownLinAddresses, flags) { }