Пример #1
0
        internal DataDirectories(PortableExecutableImage image, OptionalHeader optHeader, IMAGE_DATA_DIRECTORY[] dataDirs)
        {
            _image = image;

            var size       = (Utils.SizeOf <IMAGE_DATA_DIRECTORY>() * dataDirs.Length).ToUInt32();
            var fileSize   = optHeader.Location.FileSize;
            var fileOffset = optHeader.Location.FileOffset + fileSize;
            var rva        = optHeader.Location.RelativeVirtualAddress + optHeader.Location.VirtualSize.ToUInt32();
            var va         = optHeader.Location.VirtualAddress + optHeader.Location.VirtualSize;

            Location = new Location(image, fileOffset, rva, va, size, size);

            _directories = new Dictionary <DataDirectoryType, DataDirectory>();

            for (var i = 0; i < dataDirs.Length; i++)
            {
                var type = DataDirectoryType.Unknown;

                if (i >= 0 && i <= 14)
                {
                    type = (DataDirectoryType)i;
                }

                var dir = new DataDirectory(image, this, type, dataDirs[i], optHeader.ImageBase);

                _directories.Add(type, dir);
            }
        }
Пример #2
0
 internal NTHeaders(ExeReader exeReader, StreamLocation streamLoc, FileHeader fileHeader, OptionalHeader optHeader)
 {
     reader = exeReader;
     location = streamLoc;
     file_header = fileHeader;
     opt_header = optHeader;
 }
Пример #3
0
        internal NTHeaders(ExecutableImage exeImage, ulong headerOffset, ulong imageBase, FileHeader fileHeader, OptionalHeader optHeader, DataDirectoryCollection dataDirs)
        {
            uint size = (4U + fileHeader.Location.FileSize + optHeader.Location.FileSize + dataDirs.Location.FileSize).ToUInt32();

            image = exeImage;
            location = new Location(headerOffset,Convert.ToUInt32(headerOffset),imageBase + headerOffset,size,size);
            file_header = fileHeader;
            opt_header = optHeader;
            data_dirs = dataDirs;
        }
Пример #4
0
        internal NTHeaders(PortableExecutableImage image, ulong headerOffset, ulong imageBase, FileHeader fileHeader, OptionalHeader optHeader, DataDirectories dataDirs)
        {
            _image = image;

            var size = (4U + fileHeader.Location.FileSize + optHeader.Location.FileSize + dataDirs.Location.FileSize).ToUInt32();

            Location        = new Location(image, headerOffset, headerOffset.ToUInt32(), imageBase + headerOffset, size, size);
            FileHeader      = fileHeader;
            OptionalHeader  = optHeader;
            DataDirectories = dataDirs;
        }