Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 private void BindAddressToPEHeader(PEHeaderModel peHeader)
 {
     peHeader.PropertyChanged += (sender, e) =>
     {
         if (e.PropertyName == "Address" || e.PropertyName == "Length")
             this.Address = peHeader.Address + peHeader.Length;
     };
 }
Esempio n. 3
0
 private void BindAddressToPEHeader(PEHeaderModel peHeader)
 {
     peHeader.PropertyChanged += (sender, e) =>
     {
         if (e.PropertyName == "Address" || e.PropertyName == "Length")
         {
             this.Address = peHeader.Address + peHeader.Length;
         }
     };
 }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
                }
            };
        }