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

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

Тема в разделе '.NET', создана пользователем JonMagon, 21 авг 2016.

  1. TopicStarter Overlay

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

    Сообщения:
    804
    Лайки:
    808
    Пол:
    Мужской
    Репутация:
    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
    namerand0m, Donato Ferrante, LiptoN[Triton] и ещё 1-му нравится это.
  2. namerand0m Пользователи

    Сообщения:
    10
    Лайки:
    3
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    A
    Несколько костыльно вычисляется смещения, насколько я могу судить. Возможно с момента написания статьи изменились интерфейсы типов, но сейчас для того чтобы вычислить то же смещение проще обратиться к свойству Offset по пути PointedSection->Offset. В этом случае код выглядит так:
    Код:
    int address = function.PointedSection.Offset
    JonMagon нравится это.
  3. TopicStarter Overlay

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

    Сообщения:
    804
    Лайки:
    808
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Тогда не было
Черновик сохранён Черновик удалён
Similar Threads
  1. GoD777
    Ответов:
    1
    Просмотров:
    3.233
  2. diavolada
    Ответов:
    6
    Просмотров:
    1.798
  3. Sneeska
    Ответов:
    10
    Просмотров:
    2.788
  4. MeowCtas
    Ответов:
    4
    Просмотров:
    2.709
  5. Rey35
    Ответов:
    1
    Просмотров:
    2.345
Загрузка...

Поделиться этой страницей