public IEnumerable <IMAGE_IMPORT_DESCRIPTOR> EnumImports() { IMAGE_DATA_DIRECTORY iteratorVariable0 = this.NTHeader.OptionalHeader.DataDirectory[1]; if (iteratorVariable0.Size > 0) { IMAGE_IMPORT_DESCRIPTOR iteratorVariable3; uint ptrFromRVA = this.GetPtrFromRVA(iteratorVariable0.VirtualAddress); uint iteratorVariable2 = typeof(IMAGE_IMPORT_DESCRIPTOR).SizeOf(); while ((this.Read <IMAGE_IMPORT_DESCRIPTOR>((long)ptrFromRVA, SeekOrigin.Begin, out iteratorVariable3) && (iteratorVariable3.OriginalFirstThunk > 0)) && (iteratorVariable3.Name > 0)) { yield return(iteratorVariable3); ptrFromRVA += iteratorVariable2; } } }
/// <summary>Enumerate the import descriptors of the current PortableExecutable</summary> /// <returns>An IEnumerable of IMAGE_IMPORT_DESCRIPTOR structures, each of which represents a single module to import</returns> public IEnumerable <IMAGE_IMPORT_DESCRIPTOR> EnumImports() { IMAGE_DATA_DIRECTORY impDir = this.NTHeader.OptionalHeader.DataDirectory[(int)DATA_DIRECTORIES.ImportTable]; if (impDir.Size > 0) { uint pDesc = GetPtrFromRVA(impDir.VirtualAddress); uint szDesc = typeof(IMAGE_IMPORT_DESCRIPTOR).SizeOf(); IMAGE_IMPORT_DESCRIPTOR desc; while (base.Read(pDesc, SeekOrigin.Begin, out desc) && desc.OriginalFirstThunk > 0 && desc.Name > 0) { yield return(desc); pDesc += szDesc; } } }
public IEnumerable <IMAGE_IMPORT_DESCRIPTOR> EnumImports() { IMAGE_DATA_DIRECTORY iMAGE_DATA_DIRECTORY = this.NTHeader.OptionalHeader.DataDirectory[1]; if (iMAGE_DATA_DIRECTORY.Size > 0u) { uint num = this.GetPtrFromRVA(iMAGE_DATA_DIRECTORY.VirtualAddress); uint num2 = typeof(IMAGE_IMPORT_DESCRIPTOR).SizeOf(); IMAGE_IMPORT_DESCRIPTOR iMAGE_IMPORT_DESCRIPTOR; while (base.Read <IMAGE_IMPORT_DESCRIPTOR>((long)((ulong)num), SeekOrigin.Begin, out iMAGE_IMPORT_DESCRIPTOR) && iMAGE_IMPORT_DESCRIPTOR.OriginalFirstThunk > 0u && iMAGE_IMPORT_DESCRIPTOR.Name > 0u) { yield return(iMAGE_IMPORT_DESCRIPTOR); num += num2; } } yield break; }
public ResourceWalker(JLibrary.PortableExecutable.PortableExecutable image) { IMAGE_DATA_DIRECTORY image_data_directory = image.NTHeader.OptionalHeader.DataDirectory[2]; uint root = 0; if ((image_data_directory.VirtualAddress > 0) && (image_data_directory.Size > 0)) { IMAGE_RESOURCE_DIRECTORY image_resource_directory; if (!image.Read <IMAGE_RESOURCE_DIRECTORY>((long)(root = image.GetPtrFromRVA(image_data_directory.VirtualAddress)), SeekOrigin.Begin, out image_resource_directory)) { throw image.GetLastError(); } IMAGE_RESOURCE_DIRECTORY_ENTRY entry = new IMAGE_RESOURCE_DIRECTORY_ENTRY { SubdirectoryRva = 0x80000000 }; this.Root = new ResourceDirectory(image, entry, false, root); } }
public ResourceWalker(PortableExecutable image) { IMAGE_DATA_DIRECTORY rsrcDir = image.NTHeader.OptionalHeader.DataDirectory[(int)DATA_DIRECTORIES.ResourceTable]; IMAGE_RESOURCE_DIRECTORY rootDir; uint rootAddr = 0; if (rsrcDir.VirtualAddress > 0 && rsrcDir.Size > 0) { if (image.Read((rootAddr = image.GetPtrFromRVA(rsrcDir.VirtualAddress)), System.IO.SeekOrigin.Begin, out rootDir)) { this.Root = new ResourceDirectory(image, new IMAGE_RESOURCE_DIRECTORY_ENTRY() { SubdirectoryRva = 0x80000000 }, false, rootAddr); } else { throw image.GetLastError(); } } }
public ResourceWalker(PortableExecutable image) { IMAGE_DATA_DIRECTORY iMAGE_DATA_DIRECTORY = image.NTHeader.OptionalHeader.DataDirectory[2]; if (iMAGE_DATA_DIRECTORY.VirtualAddress <= 0u || iMAGE_DATA_DIRECTORY.Size <= 0u) { return; } uint ptrFromRVA; IMAGE_RESOURCE_DIRECTORY iMAGE_RESOURCE_DIRECTORY; if (image.Read <IMAGE_RESOURCE_DIRECTORY>((long)((ulong)(ptrFromRVA = image.GetPtrFromRVA(iMAGE_DATA_DIRECTORY.VirtualAddress))), SeekOrigin.Begin, out iMAGE_RESOURCE_DIRECTORY)) { this.Root = new ResourceWalker.ResourceDirectory(image, new IMAGE_RESOURCE_DIRECTORY_ENTRY { SubdirectoryRva = 2147483648u }, false, ptrFromRVA); return; } throw image.GetLastError(); }