Пример #1
0
 protected HeapRegionBase(ulong heapBase, ColorString heapName, ulong baseAddress, ulong size, HeapTypeCache typeCache, DbgEngDebugger debugger)
     : base(baseAddress, size, debugger)
 {
     TypeCache  = typeCache;
     HeapBase   = new Address(heapBase, debugger.TargetIs32Bit);
     m_heapName = heapName ?? new ColorString("Heap ").Append(HeapBase);
 }
Пример #2
0
 public NativeHeapSegmentRegion(ulong heapBase,
                                ColorString heapName,
                                PSObject heapSegment,
                                ulong heapEncoding,
                                HeapTypeCache typeCache,
                                DbgEngDebugger debugger)
     : base(heapBase, heapName, SegmentBase(heapSegment), SegmentSize(heapSegment), typeCache, debugger)
 {
     m_heapSegment  = heapSegment;
     m_heapEncoding = heapEncoding;
 }
Пример #3
0
        public IEnumerable <MemoryRegionBase> IdentifyRegions(DbgEngDebugger debugger)
        {
            var  dataSections  = debugger.Modules.Select(m => (m, m.GetSectionHeaders().FirstOrDefault(h => h.Name == ".data"))).ToList();
            var  types         = new HeapTypeCache(debugger);
            bool isDefaultHeap = true;

            foreach (var heapBase in AllHeaps(debugger))
            {
                foreach (var segment in RegionsForHeap(heapBase, debugger, types, dataSections, isDefaultHeap))
                {
                    yield return(segment);
                }
                isDefaultHeap = false;
            }
        }
Пример #4
0
 private static IEnumerable <MemoryRegionBase> RegionsForHeap(ulong heapBase, DbgEngDebugger debugger, HeapTypeCache types,
                                                              List <(DbgModuleInfo mod, IMAGE_SECTION_HEADER dataHdr)> dataSections, bool isDefaultHeap)
Пример #5
0
 public HeapEntryRegion(ulong heapBase, ColorString heapName, _HEAP_ENTRY entry, ulong baseAddress, HeapTypeCache typeCache, DbgEngDebugger debugger)
     : base(heapBase, heapName, baseAddress, entry.Size * 8u, typeCache, debugger)
 {
     m_entry = entry;
 }