Ошибка сегментации шеллкода

Я начал изучать шеллкод в 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)

person Kimilcan    schedule 18.01.2015    source источник
comment
Дубликат execve-shellcode-writing-segmentation-fault   -  person Jester    schedule 18.01.2015
comment
@Jester: Да, даже кажется, что это ТОЧНО повторяющийся вопрос!   -  person Martin Rosenau    schedule 18.01.2015