internal ResourceDirectoryEntry(DataDirectory dataDirectory, Location dataLocation, ResourceDirectory parentDirectory, IMAGE_RESOURCE_DIRECTORY_ENTRY directoryEntry) : base(dataDirectory,dataLocation) { parent_directory = parentDirectory; entry = directoryEntry; name = null; directory = null; data = null; }
internal ResourceDirectoryEntry(PortableExecutableImage image, DataDirectory dataDirectory, Location location, ResourceDirectory parentDirectory, IMAGE_RESOURCE_DIRECTORY_ENTRY entry) : base(image, dataDirectory, location) { _name = null; _directory = null; _data = null; ParentDirectory = parentDirectory; NameType = ((entry.Name & 0x80000000) == 0x80000000 ? NameType.Name : NameType.ID); OffsetType = ((entry.OffsetToData & 0x80000000) == 0x80000000 ? OffsetType.Directory : OffsetType.Data); Name = entry.Name; OffsetToData = entry.OffsetToData; }
public async Task <ResourceDataEntry> GetDataEntryAsync() { if (_data == null && (OffsetToData & 0x80000000) != 0x80000000) { var calc = Image.GetCalculator(); var offset = OffsetToData & 0x7fffffff; var rva = DataDirectory.VirtualAddress + offset; var va = Image.NTHeaders.OptionalHeader.ImageBase + rva; var fileOffset = calc.RVAToOffset(rva); var size = Utils.SizeOf <IMAGE_RESOURCE_DATA_ENTRY>().ToUInt32(); var section = calc.RVAToSection(rva); var location = new Location(Image, fileOffset, rva, va, size, size, section); _data = new ResourceDataEntry(Image, DataDirectory, location, this); await _data.LoadAsync().ConfigureAwait(false); } return(_data); }
internal ResourceData(PortableExecutableImage image, DataDirectory dataDirectory, Location location, ResourceDataEntry entry) : base(image, dataDirectory, location) { Entry = entry; }
public ResourceDataEntry GetDataEntry() { if (data == null && ((entry.OffsetToData & 0x80000000) != 0x80000000)) { LocationCalculator calc = DataDirectory.Directories.Image.GetCalculator(); uint offset = entry.OffsetToData & 0x7fffffff; uint rva = DataDirectory.VirtualAddress + offset; ulong va = DataDirectory.Directories.Image.NTHeaders.OptionalHeader.ImageBase + rva; ulong file_offset = calc.RVAToOffset(rva); uint size = Utils.SizeOf<IMAGE_RESOURCE_DATA_ENTRY>().ToUInt32(); Section section = calc.RVAToSection(rva); Location location = new Location(file_offset, rva, va, size, size, section); data = new ResourceDataEntry(DataDirectory,location,this); } return data; }
internal ResourceData(DataDirectory dataDirectory, Location dataLocation, ResourceDataEntry dataEntry) : base(dataDirectory,dataLocation) { data_entry = dataEntry; }