nspr4!PR_Write |
[Mar. 9th, 2015|03:05 pm] |
|
|
|
Comments: |
ишьты, хитренько. мерси.
> В следующий раз еще расскажу [...]
а вот это бы я тоже с большим интересом почитал.
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | From: | herm1t |
Date: | March 9th, 2015 - 05:27 pm |
---|
| | | (Link) |
|
Если коротко, то либа инжектится целиком __libc_dlopen_mode(..., RTLD_LAZY), именно LAZY, а не NOW, в конструкторе либа из своего _DYNAMIC берет GOT, из GOT[1] - link_map, из link_map - _DYNAMIC процесса, из него .dynsym, .dynstr, .rela.plt, в RELA находится нужная функа (ELF64_R_SYM(rel[i].r_info) - это индекс в .dynsym), а r_offset указывает на ее GOT-entry, который нужно сохранить и затереть указателем на свою функу. Как-то так.
о! мерси! помусолю на досуге.
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | From: | herm1t |
Date: | March 13th, 2015 - 05:13 pm |
---|
| | | (Link) |
|
| |