Пример #1
0
        private CLRDirectory GetClrDirectory(PeFile PE)
        {
            DataDirectoryEntry entry = (from t in PE.OptionalHeader.DataDirectories where t.Type == DataDirectoryType.CLR select t).FirstOrDefault();

            entry.Reload();
            CLRDirectory dir = entry.GetComponent() as CLRDirectory;

            dir.Load(new VirtualReader(PE.SectionHeaders.GetVirtualStream()));
            return(dir);
        }
Пример #2
0
        public override bool View(ViewModels.TabPageModel tabPage)
        {
            tabPage.Title = Text.ToString();
            tabPage.SupportsLanguageSwitching = false;

            var dataGrid = Helpers.PrepareDataGrid(tabPage, this);
            //dataGrid.AutoGenerateColumns = false;
            //dataGrid.Columns.Add(new DataGridTextColumn { IsReadOnly = true, Header = "Name", Binding = new Binding("Name") });
            //dataGrid.Columns.Add(new DataGridTextColumn { IsReadOnly = true, Header = "RVA", Binding = new Binding("RVA") { StringFormat = "X8" } });
            //dataGrid.Columns.Add(new DataGridTextColumn { IsReadOnly = true, Header = "Size", Binding = new Binding("Size") { StringFormat = "X8" } });
            //dataGrid.Columns.Add(new DataGridTextColumn { IsReadOnly = true, Header = "Section", Binding = new Binding("Section") });
            var headers = module.Reader.PEHeaders;
            var header  = headers.PEHeader;

            var entries = new DataDirectoryEntry[] {
                new DataDirectoryEntry(headers, "Export Table", header.ExportTableDirectory),
                new DataDirectoryEntry(headers, "Import Table", header.ImportTableDirectory),
                new DataDirectoryEntry(headers, "Resource Table", header.ResourceTableDirectory),
                new DataDirectoryEntry(headers, "Exception Table", header.ExceptionTableDirectory),
                new DataDirectoryEntry(headers, "Certificate Table", header.CertificateTableDirectory),
                new DataDirectoryEntry(headers, "Base Relocation Table", header.BaseRelocationTableDirectory),
                new DataDirectoryEntry(headers, "Debug Table", header.DebugTableDirectory),
                new DataDirectoryEntry(headers, "Copyright Table", header.CopyrightTableDirectory),
                new DataDirectoryEntry(headers, "Global Pointer Table", header.GlobalPointerTableDirectory),
                new DataDirectoryEntry(headers, "Thread Local Storage Table", header.ThreadLocalStorageTableDirectory),
                new DataDirectoryEntry(headers, "Load Config", header.LoadConfigTableDirectory),
                new DataDirectoryEntry(headers, "Bound Import", header.BoundImportTableDirectory),
                new DataDirectoryEntry(headers, "Import Address Table", header.ImportAddressTableDirectory),
                new DataDirectoryEntry(headers, "Delay Import Descriptor", header.DelayImportTableDirectory),
                new DataDirectoryEntry(headers, "CLI Header", header.CorHeaderTableDirectory),
            };

            dataGrid.ItemsSource = entries;

            tabPage.Content = dataGrid;
            return(true);
        }
Пример #3
0
 public ResourceDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #4
0
 public CertificateDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #5
0
 public IATDirectory(DataDirectoryEntry entry, ImportDirectory dir) : base(entry)
 {
     this.dir = dir;
 }
 public RelocationDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #7
0
 public DebugDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #8
0
 public CLRDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
 public ImportDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #10
0
 public TLSDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Пример #11
0
		private bool TryGetSectionHeaderFromDirectoryEntry(DataDirectoryEntry entry, out ImageSectionHeader retSectionHeader)
		{
			var directoryEntry = OptionalHeader.DataDirectory[(int) entry];

			foreach (var sectionHeader in _sectionHeaders)
			{
				if (sectionHeader.VirtualAddress <= directoryEntry.VirtualAddress &&
					sectionHeader.VirtualAddress + sectionHeader.SizeOfRawData > directoryEntry.VirtualAddress)
				{
					retSectionHeader = sectionHeader;
					return true;
				}
			}

			retSectionHeader = new ImageSectionHeader();
			return false;
		}