Пространство пользователя Linux загрузчик ELF

Эта статья имеет довольно простую пошаговую демонстрацию. Однако наличие для вызова GC вместо того, чтобы позволить это взять его естественный курс обычно является знак плохого дизайна/управления памятью, особенно , если никакие ограниченные ресурсы не используются (соединения, дескрипторы, что-либо еще, что обычно приводит к реализации IDisposable).

, Что заставляет Вас должны делать это?

12
задан Vadim Kotov 24 July 2017 в 11:00
поделиться

4 ответа

Быстрый поиск apt-cache предлагает libelf1 , libelfg0 и / или libelfsh0 . Я думаю, что программа elfsh (в одноименном пакете) может быть интересным практическим примером того, как использовать libelfsh0 .

Я сам не пробовал, но надеюсь, что они может быть полезно. Удачи: -)

2
ответ дан 2 December 2019 в 23:51
поделиться

Взгляните на libelf для чтения исполняемого формата. Я думаю, у вас будут проблемы с этим.

Похоже, поскольку вам ни для чего не нужны библиотеки, почему бы просто не использовать mmap для вашего исполняемого файла, установить данные о различных областях памяти и jmp / b?

I не знаю, есть ли у ARM эквивалент NX-битов, но стоит проверить.

0
ответ дан 2 December 2019 в 23:51
поделиться

Google's Android, in it's "bionic" libc implementation, has a completely reimplemented ELF loader. It's reasonably clean, and probably a better source than gilbc if you're looking for something simple.

1
ответ дан 2 December 2019 в 23:51
поделиться

Этот инструмент содержит загрузчик ELF: http://bitwagon.com/rtldi/rtldi.html

Я повторно использовал код из rtldi для ELF chainloader в другом проекте. Код находится здесь: http://svn.gna.org/viewcvs/plash/trunk/chroot-jail/elf-chainloader/?rev=877 и здесь есть некоторая предыстория: http : //plash.beasts.org/wiki/Story16 . (Очевидно, мне нужно разорвать эти ссылки, потому что stackoverflow не позволяет мне опубликовать> 1 ссылку!)

0
ответ дан 2 December 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: