LINUX.ORG.RU

ELF как добавить имя функции в секцию .GOT .PLT ?

 


0

1

Добрый день всем. ELF файл, как можно добавить имя функции в раздел GOT/PLT?

Функция физически существует, но не прописана в данных разделах, и соответственно она Безымянная, все вызовы внутри библиотеки происходят по Адресу.

Мне надо вызвать эту функцию из другого ELF, пока безуспешно, причем если делаю вызов по адресу из той-же либы, то Все работает хорошо.

Либо может есть другой способ сделать вызов нужной функции? (немного места для «магии» в нужном ELF имеется)

Ответ на: комментарий от blex

Дело такое, в моем коде я динамически получаю адрес этой функции, делаю на него переход (BL, так как это ARM) и попадаю в начало функции, но происходит вылет с ошибкой Сегментации, в IDA PRO показывает что код в режиме code32, а в этих либах Исключительно code16 Режим Thumb, как это победить не знаю.

Вообще использую несколько функций из это этой библиотеки, и обращаюсь к ним по адресам (не стандартно наверное для вас) но они все прописаны в got/plt и видимо поэтому работают, а тут получается в тупике.

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

Devill ()
Последнее исправление: Devill (всего исправлений: 2)
Ответ на: комментарий от Devill

ак это победить не знаю.

Руками перейти в thumb перед вызовом? Можешь посмотреть как именованые функции компилятор дёргает и повторить.

https://developer.arm.com/documentation/dui0068/b/Directives-Reference/Miscellaneous-directives/CODE16-and-CODE32

Dark_SavanT ★★★★★ ()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от Dark_SavanT

Да все верно, как раз уже прочитал этот манула, так как если при обращение к либе - код переключается в ARM, значит ему надо подсунуть пару ARM инструкций и далее сменить mode. Буду пробовать, отпишусь.

Devill ()
Ответ на: комментарий от Devill

Добавил пару команд в режиме ARM, там же и переключился ARM -> Thumb.

Всем спасибо, Решено.

Devill ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.