функция puts@plt? И у меня не получается найти ответ. Кажется что это просто лишняя индирекция, потому что вместо
Dump of assembler code for function puts@plt:
=> 0x0000555555555030 <+0>: jmp QWORD PTR [rip+0x2fe2] # 0x555555558018 <puts@got.plt>
0x0000555555555036 <+6>: push 0x0
0x000055555555503b <+11>: jmp 0x555555555020
Dump of assembler code for function main:
0x0000555555555040 <+0>: sub rsp,0x8
0x0000555555555044 <+4>: lea rdi,[rip+0xfb9] # 0x555555556004
0x000055555555504b <+11>: call 0x555555555030 <puts@plt>
=> 0x0000555555555050 <+16>: xor eax,eax
0x0000555555555052 <+18>: add rsp,0x8
0x0000555555555056 <+22>: ret
можно было бы использовать просто
main:
...
call qword [reloc.puts]
...
Добавлю еще немного контекста. Речь идет о вызове внешней функции при рандомизации адресного пространства. В примере используется обычный hello world: #include <stdio.h> int main() { puts("Hello, World!"); }
Обсуждают сегодня