Я пытаюсь создать оболочку, используя следующий код:
Section .Text
global _start
_start:
jmp short TrickCall
_ReturnHere:
pop esi
xor eax,eax
mov byte [esi+7],al
lea ebx,[esi]
mov long [esi+8],ebx
mov long [esi+12],eax
mov byte al,0x0b
mov ebx,esi
lea ecx,[esi+8]
lea edx,[esi+12]
int 0x80
TrickCall:
call _ReturnHere
db "/bin/shJAAAANNNN"
Я использую gcc версии 4.4.3 в качестве компилятора. Когда я запускаю его с помощью GDB, он дает следующий вывод:
(gdb) run
Starting program: /root/spawn_shell
Program received signal SIGSEGV, Segmentation fault.
0x08048059 in _ReturnHere ()
Невозможно получить доступ к адресу памяти _ReturnHere. Есть ли способ обойти это?