[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gdb и elf



On Fri, Nov 09, 2007 at 05:42:08PM +0300, Dmitry E. Oboukhov wrote:
> >>> Нет. Разбирать структуру elf-файла (bfd) и искать там функцию по имени.
> >> есть ли тулзы делающие что-то подобное?
> >> то есть зная имя функции получить ее смещение от начала elf?
> 
> > Готовых нет. Написать самому, используя libbfd.
> > Но лучше переформулировать задачу.
> задача стоит в том что надо пропатчить бинарник.
> исходника нет :)
> необходимая функция gdb находится а вот дальше как перейти к файлу elf?
> 

возможно на это посмотреть иначе. это не совсем то, что вам хочется, но
при определенных условиях может решить вашу проблему.

RTLD(1)                 FreeBSD General Commands Manual                RTLD(1)

NAME
     ld-elf.so.1, ld.so, rtld -- run-time link-editor

DESCRIPTION
     The ld-elf.so.1 utility is a self-contained shared object providing run-
     time support for loading and link-editing shared objects into a process'
     address space.  It is also commonly known as the dynamic linker.  It uses
     the data structures contained within dynamically linked programs to
     determine which shared libraries are needed and loads them using the
     mmap(2) system call.

...
	LD_PRELOAD      A list of shared libraries, separated by colons and/or
			white space, to be linked in before any other shared
			libraries.  If the directory is not specified then the
			directories specified by LD_LIBRARY_PATH will be
			searched first followed by the set of built-in stan-
			dard directories.  This variable is unset for set-
			user-ID and set-group-ID programs.
...


есть libconnect в портах freebsd - там перехватывается connect(2), дабы сделать 
bind(2) на локальную сторону сокета (bind адрес берется из переменной окружения 
CONN_ADDR). используется так: 

export LD_PRELOAD=/usr/local/lib/libconnect.so 
export CONN_ADDR=1.2.3.4
./program --op1 --op2

попробуйте переписать и перегрузить нужную вам функцию по аналогии. ;)

/swp



Reply to: