Пример #1
0
        public static void BeginFile(string file, uint newSectionSize, string info)
        {
            Program.MainForm.StatusBar.Text = info;

            if (!s_ElfFiles.ContainsKey(file))
            {
                var elfFile = new ElfFile();
                s_ElfFiles[file] = elfFile;

                s_CurFile = elfFile;

                elfFile.Load(file, newSectionSize);
            }
        }
Пример #2
0
        static void LoadElf(string elf)
        {
            FileStream SourceStream = File.Open(elf, FileMode.OpenOrCreate);

            ElfFile elf_file = new ElfFile();

            elf_file.Load(SourceStream);


            Console.WriteLine("[*] magic: {0}", BitConverter.ToString(elf_file.ehdr.magic).Replace("-", ""));
            Console.WriteLine("[*] machine_class: {0}", BitConverter.ToString(elf_file.ehdr.machine_class).Replace("-", ""));
            Console.WriteLine("[*] data_encoding: {0}", BitConverter.ToString(elf_file.ehdr.data_encoding).Replace("-", ""));
            Console.WriteLine("[*] version: {0}", BitConverter.ToString(elf_file.ehdr.version).Replace("-", ""));
            Console.WriteLine("[*] os_abi: {0}", BitConverter.ToString(elf_file.ehdr.os_abi).Replace("-", ""));
            Console.WriteLine("[*] abi_version: {0}", BitConverter.ToString(elf_file.ehdr.abi_version).Replace("-", ""));
            Console.WriteLine("[*] nident_size: {0}", BitConverter.ToString(elf_file.ehdr.nident_size).Replace("-", ""));
            Console.WriteLine("[*] type: 0x{0}", BitConverter.ToString(elf_file.ehdr.type).Replace("-", ""));
            Console.WriteLine("[*] machine: {0}", BitConverter.ToString(elf_file.ehdr.machine).Replace("-", ""));
            Console.WriteLine("[*] version: {0}", BitConverter.ToString(elf_file.ehdr.version).Replace("-", ""));
            Console.WriteLine("[*] entry: 0x{0}", BitConverter.ToString(elf_file.ehdr.entry).Replace("-", ""));
            Console.WriteLine("[*] phoff: 0x{0}", BitConverter.ToString(elf_file.ehdr.phoff).Replace("-", ""));
            Console.WriteLine("[*] shoff: 0x{0}", BitConverter.ToString(elf_file.ehdr.shoff).Replace("-", ""));
            Console.WriteLine("[*] flags: 0x{0}", BitConverter.ToString(elf_file.ehdr.flags).Replace("-", ""));
            Console.WriteLine("[*] ehsize: 0x{0}", BitConverter.ToString(elf_file.ehdr.ehsize).Replace("-", ""));
            Console.WriteLine("[*] phentsize: 0x{0}", BitConverter.ToString(elf_file.ehdr.phentsize).Replace("-", ""));
            Console.WriteLine("[*] phnum: 0x{0}", BitConverter.ToString(elf_file.ehdr.phnum).Replace("-", ""));
            Console.WriteLine("[*] shentsize: 0x{0}", BitConverter.ToString(elf_file.ehdr.shentsize).Replace("-", ""));
            Console.WriteLine("[*] shnum: 0x{0}", BitConverter.ToString(elf_file.ehdr.shnum).Replace("-", ""));
            Console.WriteLine("[*] shstridx: {0}", BitConverter.ToString(elf_file.ehdr.shstridx).Replace("-", ""));

            string nstring = elf_file.shstrtab.Replace("\0", "/");

            elf_file.shstrtab = elf_file.shstrtab.Replace("\0", "");
            int s = elf_file.shstrtab.Length;

            string[] names = nstring.Split('/');
            names[1].Replace("/", "");
            if (s <= 0)
            {
                if (names[1] == "")
                {
                    Console.WriteLine("[!] No Section header names found!");
                    Console.WriteLine("[.] attempting to identify required sections...");
                    FixElf(elf_file, SourceStream, elf);
                }
            }


            Console.WriteLine("Section Headers:");
            Console.WriteLine("  [Nr] Name                Type            Addr       Off    Size  Flg Lk Inf Al");
            //for i in xrange(elf_file.ehdr.shnum):
            IEnumerable <int> xrange = Enumerable.Range(0, BitConverter.ToInt16(elf_file.ehdr.shnum, 0));

            foreach (int i in xrange)
            {
                Console.WriteLine("   {0} {1} ({2})  {3}       {4}   {5} {6} {7}", i, names[i], elf_file.shdrs[i].name_len.ToString(), BitConverter.ToString(elf_file.shdrs[i].type).Replace("-", ""), BitConverter.ToString(elf_file.shdrs[i].addr).Replace("-", ""), BitConverter.ToString(elf_file.shdrs[i].offset).Replace("-", ""), BitConverter.ToString(elf_file.shdrs[i].size).Replace("-", ""), BitConverter.ToString(elf_file.shdrs[i].flags).Replace("-", ""));
            }

            Console.WriteLine("[.] done.");
            Console.WriteLine("Press any key to continue . . .");
            Console.ReadKey();
        }