Динамическое исправление исполняемых на BSD / UNIX
-
09-10-2019 - |
Вопрос
Я сталкиваюсь с большой проблемой. Мне нужно исправить исполняемый файл для изменения его поведения. Программа написана в C и до сих пор я использовал IDA для его редактирования, но то, как я не мог, например, заменять целые функции и т. Д. Это кажется для меня, что самый простой способ сделать это - создать своего рода Загрузчик, который загрузит программу и исправляю его, прежде чем она пройдет. Это спасет меня много времени, и все редактирование было бы намного проще.
Проблема в том, что я не могу найти никакой статьи о том, как это сделать. Может ли кто-нибудь из вас объяснить, как я должен справиться с этим процессом? Погрузчик будет записан в C / C ++.
Решение
Это совершенно актуально, чтобы попробовать этот процесс.
- Почему вы не просто перекомпилируйте изменениями?
- Недоступный источник - это обычная причина.
- Это закрытая исходная программа?
- Если это так, вы, вероятно, нарушая условия лицензии, пытаясь.
- Источник потерян?
- Что случилось с резервными копиями и контролем версий?
- Он построен с ключевым кодом в общих библиотеках?
- Если это так, вы можете заменить общие библиотеки новыми функциями?
- Вы можете использовать
LD_PRELOAD
Для достижения ваших целей?
Из-за «источника доступна» философия UNIX, не так много инструментов, чтобы помочь с исправлениями двоичных файлов - классически, инструмент выбора был программой под названием adb
- Отладчик (7-м руководстве Unix Unix сказал «ADB - отладчик»). Это позволило вам редактировать двоичный.
Тем не менее, люди редко составляют серьезные изменения, так как звучит так, как вы хотите сделать, прежде всего потому, что это очень тяжелая работа, и это намного проще и более надежно сделать это, перекомпилируя исходный источник.