コード例 #1
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Load(ElfEndian endian, ElfClass elfclass, Byte[] data)
 {
     if (elfclass == ElfClass.EC_32)
     {
         sh_name      = endian.Convert(BitConverter.ToUInt32(data, 0));
         sh_type      = endian.Convert(BitConverter.ToUInt32(data, 4));
         sh_flags     = endian.Convert(BitConverter.ToUInt32(data, 8));
         sh_addr      = endian.Convert(BitConverter.ToUInt32(data, 0xC));
         sh_offset    = endian.Convert(BitConverter.ToUInt32(data, 0x10));
         sh_size      = endian.Convert(BitConverter.ToUInt32(data, 0x14));
         sh_link      = endian.Convert(BitConverter.ToUInt32(data, 0x18));
         sh_info      = endian.Convert(BitConverter.ToUInt32(data, 0x1C));
         sh_addralign = endian.Convert(BitConverter.ToUInt32(data, 0x20));
         sh_entsize   = endian.Convert(BitConverter.ToUInt32(data, 0x24));
     }
     else
     {
         sh_name      = endian.Convert(BitConverter.ToUInt32(data, 0));
         sh_type      = endian.Convert(BitConverter.ToUInt32(data, 4));
         sh_flags     = endian.Convert(BitConverter.ToUInt64(data, 8));
         sh_addr      = endian.Convert(BitConverter.ToUInt64(data, 0x10));
         sh_offset    = endian.Convert(BitConverter.ToUInt64(data, 0x18));
         sh_size      = endian.Convert(BitConverter.ToUInt64(data, 0x20));
         sh_link      = endian.Convert(BitConverter.ToUInt32(data, 0x28));
         sh_info      = endian.Convert(BitConverter.ToUInt32(data, 0x2C));
         sh_addralign = endian.Convert(BitConverter.ToUInt64(data, 0x30));
         sh_entsize   = endian.Convert(BitConverter.ToUInt64(data, 0x38));
     }
 }
コード例 #2
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Save(ElfEndian endian, ElfClass elfclass, ref Byte[] data)
 {
     if (elfclass == ElfClass.EC_32)
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_type)), 0, data, 0, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_offset)), 0, data, 4, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_vaddr)), 0, data, 8, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_paddr)), 0, data, 0xC, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_filesz)), 0, data, 0x10, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_memsz)), 0, data, 0x14, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_flags)), 0, data, 0x18, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)p_align)), 0, data, 0x1C, 4);
     }
     else
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_type)), 0, data, 0, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_flags)), 0, data, 4, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_offset)), 0, data, 8, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_vaddr)), 0, data, 0x10, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_paddr)), 0, data, 0x18, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_filesz)), 0, data, 0x20, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_memsz)), 0, data, 0x28, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(p_align)), 0, data, 0x30, 8);
     }
 }
コード例 #3
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Load(ElfEndian endian, ElfClass elfclass, Byte[] data)
 {
     if (elfclass == ElfClass.EC_32)
     {
         p_type   = endian.Convert(BitConverter.ToUInt32(data, 0));
         p_offset = endian.Convert(BitConverter.ToUInt32(data, 4));
         p_vaddr  = endian.Convert(BitConverter.ToUInt32(data, 8));
         p_paddr  = endian.Convert(BitConverter.ToUInt32(data, 0xC));
         p_filesz = endian.Convert(BitConverter.ToUInt32(data, 0x10));
         p_memsz  = endian.Convert(BitConverter.ToUInt32(data, 0x14));
         p_flags  = endian.Convert(BitConverter.ToUInt32(data, 0x18));
         p_align  = endian.Convert(BitConverter.ToUInt32(data, 0x1C));
     }
     else
     {
         p_type   = endian.Convert(BitConverter.ToUInt32(data, 0));
         p_flags  = endian.Convert(BitConverter.ToUInt32(data, 4));
         p_offset = endian.Convert(BitConverter.ToUInt64(data, 8));
         p_vaddr  = endian.Convert(BitConverter.ToUInt64(data, 0x10));
         p_paddr  = endian.Convert(BitConverter.ToUInt64(data, 0x18));
         p_filesz = endian.Convert(BitConverter.ToUInt64(data, 0x20));
         p_memsz  = endian.Convert(BitConverter.ToUInt64(data, 0x28));
         p_align  = endian.Convert(BitConverter.ToUInt64(data, 0x30));
     }
 }
コード例 #4
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Save(ElfEndian endian, ref Byte[] data)
 {
     Array.Copy(e_ident, 0, data, 0, (int)ElfIdent.EI_NIDENT);
     if (Class == ElfClass.EC_32)
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_type)), 0, data, 0x10, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_machine)), 0, data, 0x12, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_version)), 0, data, 0x14, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)e_entry)), 0, data, 0x18, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)e_phoff)), 0, data, 0x1C, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)e_shoff)), 0, data, 0x20, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_flags)), 0, data, 0x24, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_ehsize)), 0, data, 0x28, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_phentsize)), 0, data, 0x2A, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_phnum)), 0, data, 0x2C, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shentsize)), 0, data, 0x2E, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shnum)), 0, data, 0x30, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shstrndx)), 0, data, 0x32, 2);
     }
     else
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_type)), 0, data, 0x10, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_machine)), 0, data, 0x12, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_version)), 0, data, 0x14, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_entry)), 0, data, 0x18, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_phoff)), 0, data, 0x20, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shoff)), 0, data, 0x28, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_flags)), 0, data, 0x30, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_ehsize)), 0, data, 0x34, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_phentsize)), 0, data, 0x36, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_phnum)), 0, data, 0x38, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shentsize)), 0, data, 0x3A, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shnum)), 0, data, 0x3C, 2);
         Array.Copy(BitConverter.GetBytes(endian.Convert(e_shstrndx)), 0, data, 0x3E, 2);
     }
 }
コード例 #5
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Load(ElfEndian endian, Byte[] data)
 {
     if (Class == ElfClass.EC_32)
     {
         e_type      = endian.Convert(BitConverter.ToUInt16(data, 0x10));
         e_machine   = endian.Convert(BitConverter.ToUInt16(data, 0x12));
         e_version   = endian.Convert(BitConverter.ToUInt32(data, 0x14));
         e_entry     = endian.Convert(BitConverter.ToUInt32(data, 0x18));
         e_phoff     = endian.Convert(BitConverter.ToUInt32(data, 0x1C));
         e_shoff     = endian.Convert(BitConverter.ToUInt32(data, 0x20));
         e_flags     = endian.Convert(BitConverter.ToUInt32(data, 0x24));
         e_ehsize    = endian.Convert(BitConverter.ToUInt16(data, 0x28));
         e_phentsize = endian.Convert(BitConverter.ToUInt16(data, 0x2A));
         e_phnum     = endian.Convert(BitConverter.ToUInt16(data, 0x2C));
         e_shentsize = endian.Convert(BitConverter.ToUInt16(data, 0x2E));
         e_shnum     = endian.Convert(BitConverter.ToUInt16(data, 0x30));
         e_shstrndx  = endian.Convert(BitConverter.ToUInt16(data, 0x32));
     }
     else
     {
         e_type      = endian.Convert(BitConverter.ToUInt16(data, 0x10));
         e_machine   = endian.Convert(BitConverter.ToUInt16(data, 0x12));
         e_version   = endian.Convert(BitConverter.ToUInt32(data, 0x14));
         e_entry     = endian.Convert(BitConverter.ToUInt64(data, 0x18));
         e_phoff     = endian.Convert(BitConverter.ToUInt64(data, 0x20));
         e_shoff     = endian.Convert(BitConverter.ToUInt64(data, 0x28));
         e_flags     = endian.Convert(BitConverter.ToUInt32(data, 0x30));
         e_ehsize    = endian.Convert(BitConverter.ToUInt16(data, 0x34));
         e_phentsize = endian.Convert(BitConverter.ToUInt16(data, 0x36));
         e_phnum     = endian.Convert(BitConverter.ToUInt16(data, 0x38));
         e_shentsize = endian.Convert(BitConverter.ToUInt16(data, 0x3A));
         e_shnum     = endian.Convert(BitConverter.ToUInt16(data, 0x3C));
         e_shstrndx  = endian.Convert(BitConverter.ToUInt16(data, 0x3E));
     }
 }
コード例 #6
0
ファイル: ElfTypes.cs プロジェクト: therifboy/ElfIO
 public void Save(ElfEndian endian, ElfClass elfclass, ref Byte[] data)
 {
     if (elfclass == ElfClass.EC_32)
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_name)), 0, data, 0, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_type)), 0, data, 4, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_flags)), 0, data, 8, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_addr)), 0, data, 0xC, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_offset)), 0, data, 0x10, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_size)), 0, data, 0x14, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_link)), 0, data, 0x18, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_info)), 0, data, 0x1C, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_addralign)), 0, data, 0x20, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert((UInt32)sh_entsize)), 0, data, 0x24, 4);
     }
     else
     {
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_name)), 0, data, 0, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_type)), 0, data, 4, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_flags)), 0, data, 8, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_addr)), 0, data, 0x10, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_offset)), 0, data, 0x18, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_size)), 0, data, 0x20, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_link)), 0, data, 0x28, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_info)), 0, data, 0x2C, 4);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_addralign)), 0, data, 0x30, 8);
         Array.Copy(BitConverter.GetBytes(endian.Convert(sh_entsize)), 0, data, 0x38, 8);
     }
 }