/// <summary> /// Constructor /// </summary> /// <param name="view">Hex view</param> /// <param name="effectiveViewportWidth">Viewport width</param> /// <param name="effectiveViewportHeight">Viewport height</param> public HexViewState(HexView view, double effectiveViewportWidth, double effectiveViewportHeight) { if (view == null) throw new ArgumentNullException(nameof(view)); ViewportTop = view.ViewportTop; ViewportLeft = view.ViewportLeft; ViewportWidth = effectiveViewportWidth; ViewportHeight = effectiveViewportHeight; Buffer = view.Buffer; }
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public GUIDHeapData32(HexBuffer buffer, HexPosition position) : this(new HexBufferSpan(buffer, new HexSpan(position, 4))) { }
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public DataDirectoryData(HexBuffer buffer, HexPosition position) : this(new HexBufferSpan(buffer, new HexSpan(position, 8))) { }
protected FlagsHexField(HexBuffer buffer, string parentName, string name, HexPosition start, int size) : base(buffer, parentName, name, start, size) { bitFields = new Dictionary <int, HexBitField>(); }
public Int16HexField(HexBuffer buffer, string parentName, string name, HexPosition start, bool useDecimal = false) : base(buffer, parentName, name, start, 2) { data = new Int16VM(buffer.ReadInt16(start), a => UpdateValue(), useDecimal); }
/// <summary> /// Creates a hex view host /// </summary> /// <param name="buffer">Buffer</param> /// <param name="group">Group, eg. <see cref="PredefinedHexViewRoles.HexEditorGroup"/></param> /// <param name="subGroup">Sub group, eg. <see cref="PredefinedHexViewRoles.HexEditorGroupDefault"/></param> /// <param name="menuGuid">Menu guid or null</param> /// <returns></returns> public abstract WpfHexViewHost Create(HexBuffer buffer, string group, string subGroup, Guid?menuGuid);
/// <summary> /// Creates a classifier aggregator /// </summary> /// <param name="buffer">Buffer</param> /// <returns></returns> public abstract HexClassifier GetClassifier(HexBuffer buffer);
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public UnixTime32Data(HexBuffer buffer, HexPosition position) : this(new HexBufferSpan(buffer, new HexSpan(position, 4))) { }
/// <summary> /// Creates a hex view host /// </summary> /// <param name="buffer">Buffer</param> /// <param name="group">Group, eg. <see cref="PredefinedHexViewRoles.HexEditorGroup"/></param> /// <param name="subGroup">Sub group, eg. <see cref="PredefinedHexViewRoles.HexEditorGroupDefault"/></param> /// <param name="menuGuid">Menu guid or null</param> /// <returns></returns> public abstract WpfHexViewHost Create(HexBuffer buffer, string group, string subGroup, Guid? menuGuid);
/// <summary> /// Creates a new <see cref="WpfHexView"/> /// </summary> /// <param name="buffer">Buffer</param> /// <param name="roles">Roles</param> /// <param name="options">Options or null</param> /// <returns></returns> public abstract WpfHexView Create(HexBuffer buffer, VSTE.ITextViewRoleSet roles, HexViewCreatorOptions options);
/// <summary> /// Creates a new <see cref="WpfHexView"/> /// </summary> /// <param name="buffer">Buffer</param> /// <param name="options">Options or null</param> /// <returns></returns> public abstract WpfHexView Create(HexBuffer buffer, HexViewCreatorOptions options);
/// <summary> /// Creates a new <see cref="WpfHexView"/> /// </summary> /// <param name="buffer">Buffer</param> /// <param name="roles">Roles</param> /// <param name="parentOptions">Parent options</param> /// <returns></returns> public virtual WpfHexView Create(HexBuffer buffer, VSTE.ITextViewRoleSet roles, VSTE.IEditorOptions parentOptions) => Create(buffer, roles, parentOptions, (HexViewCreatorOptions)null);
/// <summary> /// Creates a new <see cref="WpfHexView"/> /// </summary> /// <param name="buffer">Buffer</param> /// <returns></returns> public virtual WpfHexView Create(HexBuffer buffer) => Create(buffer, (HexViewCreatorOptions)null);
public override WpfHexView Create(HexBuffer buffer, VSTE.ITextViewRoleSet roles, HexViewCreatorOptions options) => Create(buffer, roles, hexEditorOptionsFactoryService.GlobalOptions, options);
/// <summary> /// Creates a new <see cref="HexBufferLineProvider"/> instance /// </summary> /// <param name="buffer">Buffer</param> /// <param name="options">Options</param> /// <returns></returns> public abstract HexBufferLineProvider Create(HexBuffer buffer, HexBufferLineProviderOptions options);
public WeakDocumentListener(PENode node, HexBuffer buffer) { nodeWeakRef = new WeakReference(node); buffer.Changed += Buffer_Changed; }
public HexBufferFileImpl(HexBufferFile parentFile, Lazy <StructureProviderFactory, VSUTIL.IOrderable>[] structureProviderFactories, Lazy <BufferFileHeadersProviderFactory>[] bufferFileHeadersProviderFactories, HexBuffer buffer, HexSpan span, string name, string filename, string[] tags) : base(buffer, span, name, filename, tags) { if (parentFile?.Span.Contains(span) == false) { throw new ArgumentOutOfRangeException(nameof(span)); } ParentFile = parentFile; this.structureProviderFactories = structureProviderFactories ?? throw new ArgumentNullException(nameof(structureProviderFactories)); this.bufferFileHeadersProviderFactories = bufferFileHeadersProviderFactories ?? throw new ArgumentNullException(nameof(bufferFileHeadersProviderFactories)); files = new SpanDataCollection <HexBufferFileImpl>(); }
public static MetaDataTableVM Create(HexBuffer buffer, TablesStreamVM tablesStream, MDTable mdTable, HexSpan stringsHeapSpan, HexSpan guidHeapSpan) { switch (mdTable.Table) { case Table.Module: return(new ModuleMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.TypeRef: return(new TypeRefMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.TypeDef: return(new TypeDefMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.FieldPtr: return(new FieldPtrMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Field: return(new FieldMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MethodPtr: return(new MethodPtrMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Method: return(new MethodMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ParamPtr: return(new ParamPtrMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Param: return(new ParamMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.InterfaceImpl: return(new InterfaceImplMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MemberRef: return(new MemberRefMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Constant: return(new ConstantMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.CustomAttribute: return(new CustomAttributeMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.FieldMarshal: return(new FieldMarshalMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.DeclSecurity: return(new DeclSecurityMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ClassLayout: return(new ClassLayoutMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.FieldLayout: return(new FieldLayoutMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.StandAloneSig: return(new StandAloneSigMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.EventMap: return(new EventMapMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.EventPtr: return(new EventPtrMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Event: return(new EventMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.PropertyMap: return(new PropertyMapMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.PropertyPtr: return(new PropertyPtrMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Property: return(new PropertyMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MethodSemantics: return(new MethodSemanticsMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MethodImpl: return(new MethodImplMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ModuleRef: return(new ModuleRefMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.TypeSpec: return(new TypeSpecMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ImplMap: return(new ImplMapMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.FieldRVA: return(new FieldRVAMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ENCLog: return(new ENCLogMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ENCMap: return(new ENCMapMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Assembly: return(new AssemblyMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.AssemblyProcessor: return(new AssemblyProcessorMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.AssemblyOS: return(new AssemblyOSMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.AssemblyRef: return(new AssemblyRefMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.AssemblyRefProcessor: return(new AssemblyRefProcessorMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.AssemblyRefOS: return(new AssemblyRefOSMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.File: return(new FileMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ExportedType: return(new ExportedTypeMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ManifestResource: return(new ManifestResourceMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.NestedClass: return(new NestedClassMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.GenericParam: return(mdTable.Columns.Count == 5 ? (MetaDataTableVM) new GenericParamMetaDataTableV11VM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan) : new GenericParamMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MethodSpec: return(new MethodSpecMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.GenericParamConstraint: return(new GenericParamConstraintMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.Document: return(new DocumentMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.MethodDebugInformation: return(new MethodDebugInformationMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.LocalScope: return(new LocalScopeMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.LocalVariable: return(new LocalVariableMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.LocalConstant: return(new LocalConstantMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.ImportScope: return(new ImportScopeMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.StateMachineMethod: return(new StateMachineMethodMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); case Table.CustomDebugInformation: return(new CustomDebugInformationMetaDataTableVM(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan)); default: throw new InvalidOperationException(); } }
/// <summary> /// Gets the process id that is used by the underlying buffer stream. This can be null /// if there are no debugged processes. /// </summary> /// <param name="buffer">Buffer, created by <see cref="CreateBuffer"/></param> /// <returns></returns> public abstract int?GetProcessId(HexBuffer buffer);
/// <summary> /// Creates a tagger or returns null /// </summary> /// <typeparam name="T">Tag type</typeparam> /// <param name="hexView">Hex view</param> /// <param name="buffer">Buffer</param> /// <returns></returns> public abstract IHexTagger <T> CreateTagger <T>(HexView hexView, HexBuffer buffer) where T : HexTag;
public BufferState(HexBuffer buffer, DebuggerHexBufferStream debuggerHexBufferStream) { Buffer = buffer ?? throw new ArgumentNullException(nameof(buffer)); DebuggerHexBufferStream = debuggerHexBufferStream ?? throw new ArgumentNullException(nameof(debuggerHexBufferStream)); }
public ByteHexField(HexBuffer buffer, string parentName, string name, HexPosition start, bool useDecimal = false) : base(buffer, parentName, name, start, 1) { data = new ByteVM(buffer.ReadByte(start), a => UpdateValue(), useDecimal); }
// UI thread public override bool IsValidBuffer(HexBuffer buffer) { uiDispatcher.VerifyAccess(); return(TryGetBufferState_UI(buffer) != null); }
public UInt32HexField(HexBuffer buffer, string parentName, string name, HexPosition start, bool useDecimal = false) : base(buffer, parentName, name, start, 4) { data = new UInt32VM(buffer.ReadUInt32(start), a => UpdateValue(), useDecimal); }
/// <summary> /// Checks whether <paramref name="buffer"/> is a buffer created by this class /// </summary> /// <param name="buffer">Buffer</param> /// <returns></returns> public abstract bool IsValidBuffer(HexBuffer buffer);
public UInt32FlagsHexField(HexBuffer buffer, string parentName, string name, HexPosition start) : base(buffer, parentName, name, start, 4) { data = new UInt32VM(buffer.ReadUInt32(start), a => UpdateValue(), false); }
/// <summary> /// Updates <paramref name="buffer"/> so it uses another process stream /// </summary> /// <param name="buffer">Buffer, created by <see cref="CreateBuffer"/></param> /// <param name="pid">Process id of process to use</param> public abstract void SetProcessStream(HexBuffer buffer, int pid);
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public BlobHeapData16(HexBuffer buffer, HexPosition position) : this(new HexBufferSpan(buffer, new HexSpan(position, 2))) { }
protected SearchStateBase(HexBuffer buffer, CancellationToken cancellationToken) { Buffer = buffer; Data = Cache.GetBuffer(); CancellationToken = cancellationToken; }
public override WpfHexView Create(HexBuffer buffer, HexViewCreatorOptions options) => Create(buffer, DefaultRoles, hexEditorOptionsFactoryService.GlobalOptions, options);
protected HexClassifierAggregator(HexTagAggregator <HexClassificationTag> hexTagAggregator, VSTC.IClassificationTypeRegistryService classificationTypeRegistryService, HexBuffer buffer) { this.classificationTypeRegistryService = classificationTypeRegistryService ?? throw new ArgumentNullException(nameof(classificationTypeRegistryService)); this.hexTagAggregator = hexTagAggregator ?? throw new ArgumentNullException(nameof(hexTagAggregator)); this.buffer = buffer ?? throw new ArgumentNullException(nameof(buffer)); hexTagAggregator.TagsChanged += HexTagAggregator_TagsChanged; }
protected HexField() { IsVisible = false; Name = string.Empty; buffer = null !; // Never accessed since the field is not visible }
/// <summary> /// Gets or creates a <see cref="HexBufferFileService"/> /// </summary> /// <param name="buffer">Buffer</param> /// <returns></returns> public abstract HexBufferFileService Create(HexBuffer buffer);
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public FileOffsetData(HexBuffer buffer, HexPosition position) : base(buffer, position) { }
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public GuidData(HexBuffer buffer, HexPosition position) : this(new HexBufferSpan(buffer, new HexSpan(position, 16))) { }
/// <summary> /// Constructor /// </summary> /// <param name="buffer">Buffer</param> /// <param name="position">Position</param> public RvaData(HexBuffer buffer, HexPosition position) : base(buffer, position) { }
protected ImageOptionalHeaderVM(HexBuffer buffer, PeOptionalHeaderData optionalHeader) : base(optionalHeader.Span) { MagicVM = new UInt16HexField(optionalHeader.Magic); MajorLinkerVersionVM = new ByteHexField(optionalHeader.MajorLinkerVersion, true); MinorLinkerVersionVM = new ByteHexField(optionalHeader.MinorLinkerVersion, true); SizeOfCodeVM = new UInt32HexField(optionalHeader.SizeOfCode); SizeOfInitializedDataVM = new UInt32HexField(optionalHeader.SizeOfInitializedData); SizeOfUninitializedDataVM = new UInt32HexField(optionalHeader.SizeOfUninitializedData); AddressOfEntryPointVM = new UInt32HexField(optionalHeader.AddressOfEntryPoint); BaseOfCodeVM = new UInt32HexField(optionalHeader.BaseOfCode); SectionAlignmentVM = new UInt32HexField(optionalHeader.SectionAlignment); FileAlignmentVM = new UInt32HexField(optionalHeader.FileAlignment); MajorOperatingSystemVersionVM = new UInt16HexField(optionalHeader.MajorOperatingSystemVersion, true); MinorOperatingSystemVersionVM = new UInt16HexField(optionalHeader.MinorOperatingSystemVersion, true); MajorImageVersionVM = new UInt16HexField(optionalHeader.MajorImageVersion, true); MinorImageVersionVM = new UInt16HexField(optionalHeader.MinorImageVersion, true); MajorSubsystemVersionVM = new UInt16HexField(optionalHeader.MajorSubsystemVersion, true); MinorSubsystemVersionVM = new UInt16HexField(optionalHeader.MinorSubsystemVersion, true); Win32VersionValueVM = new UInt32HexField(optionalHeader.Win32VersionValue, true); SizeOfImageVM = new UInt32HexField(optionalHeader.SizeOfImage); SizeOfHeadersVM = new UInt32HexField(optionalHeader.SizeOfHeaders); CheckSumVM = new UInt32HexField(optionalHeader.CheckSum); SubsystemVM = new UInt16FlagsHexField(optionalHeader.Subsystem); SubsystemVM.Add(new IntegerHexBitField("Subsystem", 0, 16, SubsystemInfos)); DllCharacteristicsVM = new UInt16FlagsHexField(optionalHeader.DllCharacteristics); DllCharacteristicsVM.Add(new BooleanHexBitField("Reserved1", 0)); DllCharacteristicsVM.Add(new BooleanHexBitField("Reserved2", 1)); DllCharacteristicsVM.Add(new BooleanHexBitField("Reserved3", 2)); DllCharacteristicsVM.Add(new BooleanHexBitField("Reserved4", 3)); DllCharacteristicsVM.Add(new BooleanHexBitField("Reserved5", 4)); DllCharacteristicsVM.Add(new BooleanHexBitField("High Entropy VA", 5)); DllCharacteristicsVM.Add(new BooleanHexBitField("Dynamic Base", 6)); DllCharacteristicsVM.Add(new BooleanHexBitField("Force Integrity", 7)); DllCharacteristicsVM.Add(new BooleanHexBitField("NX Compat", 8)); DllCharacteristicsVM.Add(new BooleanHexBitField("No Isolation", 9)); DllCharacteristicsVM.Add(new BooleanHexBitField("No SEH", 10)); DllCharacteristicsVM.Add(new BooleanHexBitField("No Bind", 11)); DllCharacteristicsVM.Add(new BooleanHexBitField("AppContainer", 12)); DllCharacteristicsVM.Add(new BooleanHexBitField("WDM Driver", 13)); DllCharacteristicsVM.Add(new BooleanHexBitField("Guard CF", 14)); DllCharacteristicsVM.Add(new BooleanHexBitField("Terminal Server Aware", 15)); LoaderFlagsVM = new UInt32HexField(optionalHeader.LoaderFlags); NumberOfRvaAndSizesVM = new UInt32HexField(optionalHeader.NumberOfRvaAndSizes); DataDir0VM = Create(optionalHeader, 0, "Export"); DataDir1VM = Create(optionalHeader, 1, "Import"); DataDir2VM = Create(optionalHeader, 2, "Resource"); DataDir3VM = Create(optionalHeader, 3, "Exception"); DataDir4VM = Create(optionalHeader, 4, "Security"); DataDir5VM = Create(optionalHeader, 5, "Base Reloc"); DataDir6VM = Create(optionalHeader, 6, "Debug"); DataDir7VM = Create(optionalHeader, 7, "Architecture"); DataDir8VM = Create(optionalHeader, 8, "Global Ptr"); DataDir9VM = Create(optionalHeader, 9, "TLS"); DataDir10VM = Create(optionalHeader, 10, "Load Config"); DataDir11VM = Create(optionalHeader, 11, "Bound Import"); DataDir12VM = Create(optionalHeader, 12, "IAT"); DataDir13VM = Create(optionalHeader, 13, "Delay Import"); DataDir14VM = Create(optionalHeader, 14, ".NET"); DataDir15VM = Create(optionalHeader, 15, "Reserved15"); }
public MetaDataTable6VM(HexBuffer buffer, TablesStreamVM tablesStream, MDTable mdTable, HexSpan stringsHeapSpan, HexSpan guidHeapSpan) : base(buffer, tablesStream, mdTable, stringsHeapSpan, guidHeapSpan) { }
/// <summary> /// Creates a new <see cref="HexBufferLineFormatter"/> instance /// </summary> /// <param name="buffer">Buffer</param> /// <param name="options">Options</param> /// <returns></returns> public abstract HexBufferLineFormatter Create(HexBuffer buffer, HexBufferLineFormatterOptions options);