1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

[C#] Быстродейственный фикс elf файлов

本贴由 JonMagon2016-08-21 发布. 版块名称: .NET

  1. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    注册日期:
    2014-08-12
    帖子:
    805
    支持:
    809
    性别:
    Репутация:
    5
    Страна:
    Germany Germany
    Тянем нагетом ElfSharp
    代码:
    Install-Package ELFSharp
    Подключаем неймспэйсы
    PHP:
    using ELFSharp.ELF;
    using ELFSharp.ELF.Sections;
    using System.IO;
    Юзаем шаблон, изменяя под себя
    PHP:

    string path 
    = @"путь до сервиса";
    var 
    elf ELFReader.Load(path);
    var function = ((
    ISymbolTable)elf.GetSection(".symtab")).Entries
      
    .FirstOrDefault(ent =>
          
    ent.Type == SymbolType.Function &&
          
    ent.Name == "сырое название функции"
    );
    if (function == 
    null)
        throw new 
    Exception("Function does not exists.");
    int address int.Parse(function.ToString().Split(new [] { ": 0x" }, StringSplitOptions.None)[1].Split(',')[0], System.Globalization.NumberStyles.HexNumber) - 0x8048000;
    elf.Dispose();
    using (var writer File.OpenWrite(path))
    {
        
    writer.Seek(addressSeekOrigin.Begin);
        
    writer.WriteByte(байт для записи);
    }
    Пример для темы: http://pastebin.com/qT3ebd3Y
  2. namerand0m Пользователи

    注册日期:
    2019-03-19
    帖子:
    10
    支持:
    3
    性别:
    Репутация:
    0
    Команда:
    A
    Несколько костыльно вычисляется смещения, насколько я могу судить. Возможно с момента написания статьи изменились интерфейсы типов, но сейчас для того чтобы вычислить то же смещение проще обратиться к свойству Offset по пути PointedSection->Offset. В этом случае код выглядит так:
    代码:
    int address = function.PointedSection.Offset
    已获得JonMagon的支持.
  3. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    注册日期:
    2014-08-12
    帖子:
    805
    支持:
    809
    性别:
    Репутация:
    5
    Страна:
    Germany Germany
    Тогда не было
Черновик сохранён Черновик удалён

分享此页面