Здравствуйте, 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
это-то меня и озадачивает