Я начал изучать шеллкод в Linux. Я получаю ошибку сегментации при связывании ниже кода сборки. Можете ли вы помочь, почему я получаю эту ошибку. Заранее спасибо.
root@KaliLinux:~/Desktop# cat Untitled\ Document
1 .text
2
3 .globl _start
4
5 _start:
6
7 jmp GetString
8
9 ShellCode:
10 popl %esi
Выдает адрес строки.
11 xorl %eax,%eax
12 movb %al, 0x9(%esi)
записывает NULL в 10-й элемент строки. Но у меня здесь ошибка сегментации.
13 movl %esi, 0xa(%esi)
14 movl %eax, 0xe(%esi)
15 movb $11, %al
16 movl %esi, %ebx
17 leal 0xa(%esi), %ecx
18 leal 0xe(%esi), %edx
19 int $0x80
20
21
22 GetString:
23 call ShellCode
24 String:
25 .ascii "/bin/bashABBBBCCCC"
Выход GDB
(gdb) break 11
Breakpoint 1 at 0x8048057: file exeshellused.a, line 11.
(gdb) run
Starting program: /home/OSEZEN/exeshellused
Breakpoint 1, ShellCode () at exeshellused.a:11
11 xorl %eax,%eax
(gdb) x/1s $esi
0x8048073 <String>: "/bin/bashABBBBCCCC"
подтверждает, что я получил адрес строки.
(gdb) s
12 movb %al, 0x9(%esi)
(gdb) info registers
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xbffff590 0xbffff590
ebp 0x0 0x0
esi 0x8048073 134512755
edi 0x0 0
eip 0x8048059 0x8048059 <ShellCode+3>
eflags 0x246 [ PF ZF IF ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x0 0
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
ShellCode () at exeshellused.a:12
12 movb %al, 0x9(%esi)