コード例 #1
0
 public override IEnumerable <ElfDynamicEntry> GetDynamicEntries(EndianImageReader rdr)
 {
     for (; ;)
     {
         var dyn = new Elf32_Dyn();
         if (!rdr.TryReadInt32(out dyn.d_tag))
         {
             break;
         }
         if (dyn.d_tag == ElfDynamicEntry.DT_NULL)
         {
             break;
         }
         if (!rdr.TryReadInt32(out int val))
         {
             break;
         }
         dyn.d_val = val;
         yield return(new ElfDynamicEntry(dyn.d_tag, dyn.d_ptr));
     }
 }
コード例 #2
0
        protected virtual void RenderEntry(string name, DtFormat format, Elf32_Dyn entry, Formatter formatter)
        {
            formatter.Write("{0,-20} ", name);
            switch (format)
            {
            default:
            case DtFormat.Hexadecimal:
                formatter.Write("{0:X8}", entry.d_val);
                break;

            case DtFormat.Decimal:
                formatter.Write("{0,8}", entry.d_val);
                break;

            case DtFormat.Address:
                formatter.WriteHyperlink(string.Format("{0:X8}", entry.d_ptr), Address.Ptr32(entry.d_ptr));
                break;

            case DtFormat.String:
                formatter.Write(loader.ReadAsciiString(strtabSection.FileOffset + entry.d_ptr));
                break;
            }
        }
コード例 #3
0
        public override IEnumerable <ElfDynamicEntry> GetDynamicEntries(ulong offsetDynamic)
        {
            var rdr = imgLoader.CreateReader(offsetDynamic);

            for (; ;)
            {
                var dyn = new Elf32_Dyn();
                if (!rdr.TryReadInt32(out dyn.d_tag))
                {
                    break;
                }
                if (dyn.d_tag == ElfDynamicEntry.DT_NULL)
                {
                    break;
                }
                if (!rdr.TryReadInt32(out int val))
                {
                    break;
                }
                dyn.d_val = val;
                yield return(new ElfDynamicEntry(dyn.d_tag, dyn.d_ptr));
            }
        }
コード例 #4
0
ファイル: ElfImageLoader.cs プロジェクト: gitter-badger/reko
 public IEnumerable<Elf32_Dyn> GetDynEntries(uint offset)
 {
     var rdr = CreateReader(offset);
     for (;;)
     {
         var dyn = new Elf32_Dyn();
         if (!rdr.TryReadInt32(out dyn.d_tag))
             break;
         if (dyn.d_tag == DT_NULL)
             break;
         int val;
         if (!rdr.TryReadInt32(out val))
             break;
         dyn.d_val = val;
         yield return dyn;
     }
 }
コード例 #5
0
ファイル: DynamicSectionRenderer.cs プロジェクト: uxmal/reko
 protected virtual void RenderEntry(string name, DtFormat format, Elf32_Dyn entry, Formatter formatter)
 {
     formatter.Write("{0,-20} ", name);
     switch (format)
     {
     default:
     case DtFormat.Hexadecimal:
         formatter.Write("{0:X8}", entry.d_val);
         break;
     case DtFormat.Decimal:
         formatter.Write("{0,8}", entry.d_val);
         break;
     case DtFormat.Address:
         formatter.WriteHyperlink(string.Format("{0:X8}", entry.d_ptr), Address.Ptr32(entry.d_ptr));
         break;
     case DtFormat.String:
         formatter.Write(loader.ReadAsciiString(strtabSection.FileOffset + entry.d_ptr));
         break;
     }
 }