SymbolExplorer.Code.Unix.Elf32_Ehdr.SwapEndian C# (CSharp) 메소드

SwapEndian() 공개 메소드

public SwapEndian ( ) : void
리턴 void
        public void SwapEndian()
        {
            e_type = (ETYPE)NativeUtils.SwapEndian((ushort)e_type);
            e_machine = (EMACHINE)NativeUtils.SwapEndian((ushort)e_machine);
            e_version = (EVERSION)NativeUtils.SwapEndian((uint)e_version);
            e_entry = NativeUtils.SwapEndian(e_entry);
            e_phoff = NativeUtils.SwapEndian(e_phoff);
            e_shoff = NativeUtils.SwapEndian(e_shoff);
            e_flags = NativeUtils.SwapEndian(e_flags);
            e_ehsize = NativeUtils.SwapEndian(e_ehsize);
            e_phentsize = NativeUtils.SwapEndian(e_phentsize);
            e_phnum = NativeUtils.SwapEndian(e_phnum);
            e_shentsize = NativeUtils.SwapEndian(e_shentsize);
            e_shnum = NativeUtils.SwapEndian(e_shnum);
            e_shstrndx = NativeUtils.SwapEndian(e_shstrndx);
        }

Usage Example

예제 #1
0
        public override void FromStream(Stream stream)
        {
            base.FromStream(stream);

            long endOffset = (stream.Position + Header.Size + 1) & ~0x1;

            ElfHeader = NativeUtils.StreamToStructure<Elf32_Ehdr>(stream);

            if ((ElfHeader.e_ident[0] != Constants.ELFMAG0) ||
                (ElfHeader.e_ident[1] != Constants.ELFMAG1) ||
                (ElfHeader.e_ident[2] != Constants.ELFMAG2) ||
                (ElfHeader.e_ident[3] != Constants.ELFMAG3))
            {
                throw new InvalidDataException("not an elf file");
            }

            ELFCLASS fileClass = (ELFCLASS)ElfHeader.e_ident[(int)EIDENT.EI_CLASS];
            ELFDATA dataClass = (ELFDATA)ElfHeader.e_ident[(int)EIDENT.EI_DATA];
            ELFVERSION version = (ELFVERSION)ElfHeader.e_ident[(int)EIDENT.EI_VERSION];
            ELFOSABI osAbi = (ELFOSABI)ElfHeader.e_ident[(int)EIDENT.EI_OSABI];
            byte abiVersion = ElfHeader.e_ident[(int)EIDENT.EI_ABIVERSION];

            if ((fileClass == ELFCLASS.ELFCLASSNONE) || (dataClass == ELFDATA.ELFDATANONE) || (version == ELFVERSION.EV_NONE))
            {
                throw new InvalidDataException("not an elf file");
            }

            // is big endian
            if (dataClass == ELFDATA.ELFDATA2MSB)
            {
                ElfHeader.SwapEndian();
            }

            stream.Seek(endOffset, SeekOrigin.Begin);
        }
Elf32_Ehdr