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);
        }
Example #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);
        }
Example #3
0
 public ResourceDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Example #4
0
 public CertificateDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Example #5
0
 public IATDirectory(DataDirectoryEntry entry, ImportDirectory dir) : base(entry)
 {
     this.dir = dir;
 }
 public RelocationDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
 public DebugDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Example #8
0
 public CLRDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
 public ImportDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
 public TLSDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
Example #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;
		}