Re[2]: модификация elf, добавление сегмента+секции
От: Molchalnik  
Дата: 20.02.25 18:24
Оценка:
Здравствуйте, kov_serg, Вы писали:

Собственно, после вызова _start я отладчиком прошёл до вызова __libc_start_main_impl

; Attributes: noreturn fuzzy-sp
.text:0000000000405E30
.text:0000000000405E30 public _start
.text:0000000000405E30 _start proc near
.text:0000000000405E30 ; __unwind {
.text:0000000000405E30 endbr64
.text:0000000000405E34 xor     ebp, ebp
.text:0000000000405E36 mov     r9, rdx
.text:0000000000405E39 pop     rsi
.text:0000000000405E3A mov     rdx, rsp
.text:0000000000405E3D and     rsp, 0FFFFFFFFFFFFFFF0h
.text:0000000000405E41 push    rax
.text:0000000000405E42 push    rsp
.text:0000000000405E43 xor     r8d, r8d
.text:0000000000405E46 xor     ecx, ecx
.text:0000000000405E48 mov     rdi, offset main
.text:0000000000405E4F db      67h
.text:0000000000405E4F call    __libc_start_main_impl

а __libc_start_main_impl - это тот код, который я приводил ниже, вот он, ещё раз дублирую:

(позднейшее уточнение) потом ещё кучка операций, а потом это:

.text:00000000004ED074 push    rbp
.text:00000000004ED075 mov     rbp, rsp
.text:00000000004ED078 push    r15
.text:00000000004ED07A push    r14
.text:00000000004ED07C push    r13
.text:00000000004ED07E push    r12
.text:00000000004ED080 push    rbx
.text:00000000004ED081 sub     rsp, 0E8h
.text:00000000004ED088 mov     [rbp+var_58], rsi
.text:00000000004ED08C mov     [rbp+var_50], rdx
.text:00000000004ED090 mov     [rbp+var_48], rcx
.text:00000000004ED094 mov     [rbp+var_40], r8
.text:00000000004ED098 mov     [rbp+var_38], r9
.text:00000000004ED09C movzx   r12d, byte ptr [rdi]
.text:00000000004ED0A0 mov     rax, fs:28h                ; вот тут segfault


таким образом код прекрасно исполняется , два десятка инструкций выполнены до segfault

это-то меня и озадачивает
Отредактировано 20.02.2025 19:21 Molchalnik . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.