コード例 #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;
 }
コード例 #6
0
 public RelocationDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
コード例 #7
0
 public DebugDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
コード例 #8
0
 public CLRDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
コード例 #9
0
 public ImportDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
コード例 #10
0
 public TLSDirectory(DataDirectoryEntry entry) : base(entry)
 {
 }
コード例 #11
0
ファイル: PEFile.cs プロジェクト: ethanmoffat/PELoaderLib
		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;
		}