This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

problem with Elf32_Ehdr


Hello everyone,
I am trying to overwrite the e_entry on an executable's elf header and
change the flow of control with the following piece of code :

                Elf32_Ehdr *self = (Elf32_Ehdr *)0x8048000;
                printf("%x",(self)->e_entry);
                (self)->e_entry = (Elf32_Addr)0x00000000;

This piece of code is present in a pre loaaded shared library.

But the problem is that even after changing the address of the
e_entry, the actual main function of the executable a.out is getting
executed. BUt if the address of this e_entry is getting changed then
how the control is finally reaching _lib_start_main and finally to
main().
I tried overwriting it with 0x0000000 still it worked.


The command given for execution is :

#LD_PRELOAD="./lib1.so" ./a.out


Where does the loader takes the address of _start before passing control to it ?
please help !

--
Regards,
Sandeep





A candle loses nothing if it is used to light another one!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]