Динамическое исправление исполняемого файла на BSD / Unix - PullRequest
0 голосов
/ 12 декабря 2010

Я столкнулся с довольно большой проблемой. Мне нужно исправить исполняемый файл, чтобы изменить его поведение. Программа написана на C, и до сих пор я использовал IDA для ее редактирования, но таким образом я не мог, например, заменить целые функции и т.д. Мне кажется, что самый простой способ сделать это - создать загрузчик, который загрузит программу и исправит ее перед запуском. Это сэкономило бы мне много времени, и все редактирование было бы намного проще.

Проблема в том, что я не могу найти ни одной статьи о том, как это сделать. Кто-нибудь из вас может объяснить, как я должен справиться с этим процессом? Загрузчик будет написан на C / C ++.

1 Ответ

1 голос
/ 12 декабря 2010

Испытывать этот процесс совершенно нетипично.

  • Почему вы просто не перекомпилируете изменения?
    • Обычно источник недоступен.
  • Это программа с закрытым исходным кодом?
    • Если это так, вы, вероятно, нарушаете условия лицензии, пытаясь.
  • Потерян источник?
    • Что случилось с резервными копиями и контролем версий?
  • Создан ли он с кодом ключа в общих библиотеках?
    • Если это так, вы можете заменить общие библиотеки новыми функциями?
  • Можно ли использовать LD_PRELOAD для достижения своих целей?

Из-за философии UNIX «источник доступен», существует не так много инструментов, которые могли бы помочь с исправлением двоичных файлов - классически, инструментом выбора была программа под названием adb - отладчик (7-е изданиеВ руководстве по UNIX указано «adb - отладчик»).Это позволило вам редактировать бинарный файл.

Тем не менее, люди редко вносят серьезные изменения так, как вы этого хотите, в первую очередь потому, что это очень тяжелая работа, и гораздо проще и надежнее сделать это путем перекомпиляцииОригинальный источник.

...