public PEFileModel(string fileName, PEFile peFile) : base(new ObservableCollection <object>()) { this.m_FileName = fileName; this.peFile = peFile; this.m_DosHeader = new DosHeaderModel(peFile.DosHeader); this.Items.Add(this.DosHeader); UpdateDosStubFromlfanew(); this.m_PEHeader = new PEHeaderModel(peFile.PEHeader, m_DosHeader); this.Items.Add(this.PEHeader); this.m_OptionalHeader = new OptionalHeaderModel(peFile.OptionalHeader, m_PEHeader); this.Items.Add(this.OptionalHeader); this.m_SectionHeaders = new SectionHeaderListModel(peFile, this.PEHeader, this.OptionalHeader); this.Items.Add(this.SectionHeaders); UpdateSectionContentParts(); this.DosHeader.PropertyChanged += DosHeader_PropertyChanged; ((INotifyCollectionChanged)this.SectionHeaders.Items).CollectionChanged += SectionHeaders_Items_CollectionChanged; }
private void BindAddressToPEHeader(PEHeaderModel peHeader) { peHeader.PropertyChanged += (sender, e) => { if (e.PropertyName == "Address" || e.PropertyName == "Length") this.Address = peHeader.Address + peHeader.Length; }; }
private void BindAddressToPEHeader(PEHeaderModel peHeader) { peHeader.PropertyChanged += (sender, e) => { if (e.PropertyName == "Address" || e.PropertyName == "Length") { this.Address = peHeader.Address + peHeader.Length; } }; }
public SectionHeaderListModel(PEFile peFile, PEHeaderModel peHeader, OptionalHeaderModel optionalHeader) : base("Section headers") { this.peFile = peFile; this.m_Items = new ReadOnlyObservableCollection <SectionHeaderModel>(itemsCore); BindAddressToOptionalHeader(optionalHeader); BindToPEHeader(peHeader); }
public SectionHeaderListModel(PEFile peFile, PEHeaderModel peHeader, OptionalHeaderModel optionalHeader) : base("Section headers") { this.peFile = peFile; this.m_Items = new ReadOnlyObservableCollection<SectionHeaderModel>(itemsCore); BindAddressToOptionalHeader(optionalHeader); BindToPEHeader(peHeader); }
public OptionalHeaderModel(OptionalHeader optionalHeader, PEHeaderModel peHeader) : base("Optional header") { this.optionalHeader = optionalHeader; BindAddressToPEHeader(peHeader); this.Address = peHeader.Address + peHeader.Length; UpdateLength(); UpdateDataFromPEMagic(); this.m_DataDirectories = new ReadOnlyObservableCollection <DataDirectoryModel>(coreDataDirectories); UpdateDataDirectories(); }
public OptionalHeaderModel(OptionalHeader optionalHeader, PEHeaderModel peHeader) : base("Optional header") { this.optionalHeader = optionalHeader; BindAddressToPEHeader(peHeader); this.Address = peHeader.Address + peHeader.Length; UpdateLength(); UpdateDataFromPEMagic(); this.m_DataDirectories = new ReadOnlyObservableCollection<DataDirectoryModel>(coreDataDirectories); UpdateDataDirectories(); }
private void BindToPEHeader(PEHeaderModel peHeader) { UpdateFromPEFile(); peHeader.PropertyChanged += (sender, e) => { if (e.PropertyName == "NumberOfSections") { int oldCount = peFile.SectionHeaders.Length; Array.Resize( ref peFile.SectionHeaders, peHeader.NumberOfSections); for (int i = oldCount; i < peFile.SectionHeaders.Length; i++) { peFile.SectionHeaders[i] = new SectionHeader(); } UpdateFromPEFile(); } }; }
private void BindToPEHeader(PEHeaderModel peHeader) { UpdateFromPEFile(); peHeader.PropertyChanged += (sender, e) => { if (e.PropertyName == "NumberOfSections") { int oldCount = peFile.SectionHeaders.Length; Array.Resize( ref peFile.SectionHeaders, peHeader.NumberOfSections); for (int i = oldCount; i < peFile.SectionHeaders.Length; i++) { peFile.SectionHeaders[i] = new SectionHeader(); } UpdateFromPEFile(); } }; }