Пример #1
0
        public static RsrcTypeInfo Deserialize(MultiPartFile file)
        {
            RsrcTypeInfo rti = new RsrcTypeInfo();

            rti.ID      = file.ReadUInt16();
            rti.rt_nres = file.ReadUInt16();
            rti.rt_proc = file.ReadUInt32();

            return(rti);
        }
Пример #2
0
        public static TYPEINFO Deserialize(MultiPartFile file)
        {
            TYPEINFO ti = new TYPEINFO();

            ti.TypeID        = file.ReadUInt16();
            ti.ResourceCount = file.ReadUInt16();
            ti.Reserved      = file.ReadUInt32();
            ti.NameInfo      = NAMEINFO.Deserialize(file);

            return(ti);
        }
Пример #3
0
        public static NewSegdata Deserialize(MultiPartFile file)
        {
            NewSegdata nsd = new NewSegdata();

            nsd.Iterations        = file.ReadUInt16();
            nsd.TotalBytes        = file.ReadUInt16();
            nsd.IteratedDataBytes = file.ReadChar();
            nsd.DataBytes         = (char)BitConverter.GetBytes(nsd.Iterations)[0];

            return(nsd);
        }
Пример #4
0
        public static NewSeg Deserialize(MultiPartFile file)
        {
            NewSeg ns = new NewSeg();

            ns.StartFileSector   = file.ReadUInt16();
            ns.BytesInFile       = file.ReadUInt16();
            ns.Flags             = file.ReadUInt16();
            ns.MinimumAllocation = file.ReadUInt16();

            return(ns);
        }
Пример #5
0
        public static ResourceTable Deserialize(MultiPartFile file)
        {
            ResourceTable rt = new ResourceTable();

            rt.rscAlignShift    = file.ReadUInt16();
            rt.TypeInfo         = TYPEINFO.Deserialize(file);
            rt.rscEndTypes      = file.ReadUInt16();
            rt.rscResourceNames = null; // TODO: Figure out size
            rt.rscEndNames      = file.ReadByte();

            return(rt);
        }
        public static IMAGE_RESOURCE_DIRECTORY Deserialize(MultiPartFile file)
        {
            IMAGE_RESOURCE_DIRECTORY ird = new IMAGE_RESOURCE_DIRECTORY();

            ird.Characteristics      = file.ReadUInt32();
            ird.TimeDateStamp        = file.ReadUInt32();
            ird.MajorVersion         = file.ReadUInt16();
            ird.MinorVersion         = file.ReadUInt16();
            ird.NumberOfNamedEntries = file.ReadUInt16();
            ird.NumberOfIdEntries    = file.ReadUInt16();

            return(ird);
        }
Пример #7
0
        public static IMAGE_FILE_HEADER Deserialize(MultiPartFile file)
        {
            IMAGE_FILE_HEADER ifh = new IMAGE_FILE_HEADER();

            ifh.Machine              = file.ReadUInt16();
            ifh.NumberOfSections     = file.ReadUInt16();
            ifh.TimeDateStamp        = file.ReadUInt32();
            ifh.PointerToSymbolTable = file.ReadUInt32();
            ifh.NumberOfSymbols      = file.ReadUInt32();
            ifh.SizeOfOptionalHeader = file.ReadUInt16();
            ifh.Characteristics      = file.ReadUInt16();

            return(ifh);
        }
Пример #8
0
        public static NewRlcInfo Deserialize(MultiPartFile file)
        {
            NewRlcInfo nri = new NewRlcInfo();

            nri.RelocationItemCount = file.ReadUInt16();

            return(nri);
        }
Пример #9
0
        public static NewRsrc Deserialize(MultiPartFile file)
        {
            NewRsrc nr = new NewRsrc();

            nr.AlignmentShiftCount = file.ReadUInt16();
            nr.TypeInfo            = RsrcTypeInfo.Deserialize(file);

            return(nr);
        }
Пример #10
0
        public static IMAGE_RESOURCE_DIR_STRING_U Deserialize(MultiPartFile file)
        {
            IMAGE_RESOURCE_DIR_STRING_U irdsu = new IMAGE_RESOURCE_DIR_STRING_U();

            irdsu.Length     = file.ReadUInt16();
            irdsu.NameString = file.ReadChars(irdsu.Length);

            return(irdsu);
        }
Пример #11
0
        public static IMAGE_SECTION_HEADER Deserialize(MultiPartFile file)
        {
            IMAGE_SECTION_HEADER ish = new IMAGE_SECTION_HEADER();

            ish.Name = file.ReadBytes(Constants.IMAGE_SIZEOF_SHORT_NAME);

            // Misc
            ish.PhysicalAddress = file.ReadUInt32();
            ish.VirtualSize     = ish.PhysicalAddress;

            ish.VirtualAddress       = file.ReadUInt32();
            ish.SizeOfRawData        = file.ReadUInt32();
            ish.PointerToRawData     = file.ReadUInt32();
            ish.PointerToRelocations = file.ReadUInt32();
            ish.PointerToLinenumbers = file.ReadUInt32();
            ish.NumberOfRelocations  = file.ReadUInt16();
            ish.NumberOfLinenumbers  = file.ReadUInt16();
            ish.Characteristics      = (SectionCharacteristics)file.ReadUInt32();

            return(ish);
        }
Пример #12
0
        public static IMAGE_OPTIONAL_HEADER Deserialize(MultiPartFile file)
        {
            IMAGE_OPTIONAL_HEADER ioh = new IMAGE_OPTIONAL_HEADER();

            ioh.Magic = file.ReadUInt16();
            ioh.MajorLinkerVersion      = file.ReadByte();
            ioh.MinorLinkerVersion      = file.ReadByte();
            ioh.SizeOfCode              = file.ReadUInt32();
            ioh.SizeOfInitializedData   = file.ReadUInt32();
            ioh.SizeOfUninitializedData = file.ReadUInt32();
            ioh.AddressOfEntryPoint     = file.ReadUInt32();
            ioh.BaseOfCode              = file.ReadUInt32();
            ioh.BaseOfData              = file.ReadUInt32();

            ioh.ImageBase                   = file.ReadUInt32();
            ioh.SectionAlignment            = file.ReadUInt32();
            ioh.FileAlignment               = file.ReadUInt32();
            ioh.MajorOperatingSystemVersion = file.ReadUInt16();
            ioh.MinorOperatingSystemVersion = file.ReadUInt16();
            ioh.MajorImageVersion           = file.ReadUInt16();
            ioh.MinorImageVersion           = file.ReadUInt16();
            ioh.MajorSubsystemVersion       = file.ReadUInt16();
            ioh.MinorSubsystemVersion       = file.ReadUInt16();
            ioh.Reserved1                   = file.ReadUInt32();
            ioh.SizeOfImage                 = file.ReadUInt32();
            ioh.SizeOfHeaders               = file.ReadUInt32();
            ioh.CheckSum            = file.ReadUInt32();
            ioh.Subsystem           = file.ReadUInt16();
            ioh.DllCharacteristics  = file.ReadUInt16();
            ioh.SizeOfStackReserve  = file.ReadUInt32();
            ioh.SizeOfStackCommit   = file.ReadUInt32();
            ioh.SizeOfHeapReserve   = file.ReadUInt32();
            ioh.SizeOfHeapCommit    = file.ReadUInt32();
            ioh.LoaderFlags         = file.ReadUInt32();
            ioh.NumberOfRvaAndSizes = file.ReadUInt32();
            ioh.DataDirectory       = new IMAGE_DATA_DIRECTORY[Constants.IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
            for (int i = 0; i < Constants.IMAGE_NUMBEROF_DIRECTORY_ENTRIES; i++)
            {
                ioh.DataDirectory[i] = IMAGE_DATA_DIRECTORY.Deserialize(file);
            }

            return(ioh);
        }
Пример #13
0
        }                                                       // Reserved

        public static NewRlc Deserialize(MultiPartFile file)
        {
            NewRlc nr = new NewRlc();

            nr.SourceType   = file.ReadChar();
            nr.Flags        = file.ReadChar();
            nr.SourceOffset = file.ReadUInt16();

            // nr_intref
            nr.TargetSegmentNumber    = file.ReadChar();
            nr.Reserved1              = file.ReadChar();
            nr.TargetEntryTableOffset = file.ReadUInt16();

            // nr_import
            nr.ModuleReferenceTableIndex = BitConverter.ToUInt16(new byte[] { (byte)nr.SourceType, (byte)nr.Flags }, 0);
            nr.ProcedureOffset           = nr.TargetEntryTableOffset;

            // nr_osfix
            nr.OperatingSystemFixupType = nr.ModuleReferenceTableIndex;
            nr.Reserved2 = nr.ProcedureOffset;

            return(nr);
        }
Пример #14
0
        public static NAMEINFO Deserialize(MultiPartFile file)
        {
            NAMEINFO ni = new NAMEINFO();

            ni.Offset = file.ReadUInt16();
            ni.Length = file.ReadUInt16();
            ni.Flags  = file.ReadUInt16();
            ni.ID     = file.ReadUInt16();
            ni.Handle = file.ReadUInt16();
            ni.Usage  = file.ReadUInt16();

            return(ni);
        }
Пример #15
0
        public static RsrcNameInfo Deserialize(MultiPartFile file)
        {
            RsrcNameInfo rni = new RsrcNameInfo();

            rni.Offset     = file.ReadUInt16();
            rni.Length     = file.ReadUInt16();
            rni.Flags      = file.ReadUInt16();
            rni.NameID     = file.ReadUInt16();
            rni.Handle     = file.ReadUInt16();
            rni.UsageCount = file.ReadUInt16();

            return(rni);
        }
Пример #16
0
        }                                                       // 3F Windows SDK version number

        public static IMAGE_OS2_HEADER Deserialize(MultiPartFile file)
        {
            IMAGE_OS2_HEADER ioh = new IMAGE_OS2_HEADER();

            ioh.Magic                       = file.ReadUInt16();
            ioh.LinkerVersion               = file.ReadByte();
            ioh.LinkerRevision              = file.ReadByte();
            ioh.EntryTableOffset            = file.ReadUInt16();
            ioh.EntryTableSize              = file.ReadUInt16();
            ioh.CrcChecksum                 = file.ReadUInt32();
            ioh.Flags                       = file.ReadUInt16();
            ioh.Autodata                    = file.ReadUInt16();
            ioh.InitialHeapAlloc            = file.ReadUInt16();
            ioh.InitialStackAlloc           = file.ReadUInt16();
            ioh.InitialCSIPSetting          = file.ReadUInt32();
            ioh.InitialSSSPSetting          = file.ReadUInt32();
            ioh.FileSegmentCount            = file.ReadUInt16();
            ioh.ModuleReferenceTableSize    = file.ReadUInt16();
            ioh.NonResidentNameTableSize    = file.ReadUInt16();
            ioh.SegmentTableOffset          = file.ReadUInt16();
            ioh.ResourceTableOffset         = file.ReadUInt16();
            ioh.ResidentNameTableOffset     = file.ReadUInt16();
            ioh.ModuleReferenceTableOffset  = file.ReadUInt16();
            ioh.ImportedNamesTableOffset    = file.ReadUInt16();
            ioh.NonResidentNamesTableOffset = file.ReadUInt32();
            ioh.MovableEntriesCount         = file.ReadUInt16();
            ioh.SegmentAlignmentShiftCount  = file.ReadUInt16();
            ioh.ResourceEntriesCount        = file.ReadUInt16();
            ioh.TargetOperatingSystem       = file.ReadByte();
            ioh.AdditionalFlags             = file.ReadByte();
            ioh.Reserved                    = new ushort[Constants.NERESWORDS];
            for (int i = 0; i < Constants.NERESWORDS; i++)
            {
                ioh.Reserved[i] = file.ReadUInt16();
            }
            ioh.WindowsSDKRevision = file.ReadByte();
            ioh.WindowsSDKVersion  = file.ReadByte();

            return(ioh);
        }
Пример #17
0
        }                                                           // 3C File address of new exe header

        public static IMAGE_DOS_HEADER Deserialize(MultiPartFile file)
        {
            IMAGE_DOS_HEADER idh = new IMAGE_DOS_HEADER();

            idh.Magic                  = file.ReadUInt16();
            idh.LastPageBytes          = file.ReadUInt16();
            idh.Pages                  = file.ReadUInt16();
            idh.Relocations            = file.ReadUInt16();
            idh.HeaderParagraphSize    = file.ReadUInt16();
            idh.MinimumExtraParagraphs = file.ReadUInt16();
            idh.MaximumExtraParagraphs = file.ReadUInt16();
            idh.InitialSSValue         = file.ReadUInt16();
            idh.InitialSPValue         = file.ReadUInt16();
            idh.Checksum               = file.ReadUInt16();
            idh.InitialIPValue         = file.ReadUInt16();
            idh.InitialCSValue         = file.ReadUInt16();
            idh.RelocationTableAddr    = file.ReadUInt16();
            idh.OverlayNumber          = file.ReadUInt16();
            idh.Reserved1              = new ushort[Constants.ERES1WDS];
            for (int i = 0; i < Constants.ERES1WDS; i++)
            {
                idh.Reserved1[i] = file.ReadUInt16();
            }
            idh.OEMIdentifier  = file.ReadUInt16();
            idh.OEMInformation = file.ReadUInt16();
            idh.Reserved2      = new ushort[Constants.ERES2WDS];
            for (int i = 0; i < Constants.ERES2WDS; i++)
            {
                idh.Reserved2[i] = file.ReadUInt16();
            }
            idh.NewExeHeaderAddr = file.ReadInt32();

            return(idh);
        }