Проблема при написании shellcode

Рейтинг: 1Ответов: 0Опубликовано: 22.02.2015

Здравствуйте, помогите, пожалуйста, разобраться (выполняю учебное задание). Для начала хочу написать шеллкод, который бы запускал командную строку в Windows. Для этого пишу сначала ассемблер:

    push 20646D63h
    mov eax, esp
    push 1
    push eax
    mov eax, 753D27ECh
    call eax

Он запускается и работает. (Значит адреса были вычислены верно, как я понимаю.)
Теперь открываю и беру опткодовую реализацию этого ассемблера:

        push 20646D63h
00401009 68 63 6D 64 20       push        20646D63h  
        mov eax, esp
0040100E 8B C4                mov         eax,esp  
        push 1
00401010 6A 01                push        1  
        push eax
00401012 50                   push        eax  
        mov eax, 753D27ECh
00401013 B8 EC 27 3D 75       mov         eax,753D27ECh  
        call eax
00401018 FF D0                call        eax

То есть, собрав байты вместе, получаю код:

"\x68\x63\x6D\x64\x20"
"\x8B\xC4"
"\x6A\x01"
"\x50"
"\xB8\xEC\x27\x3D\x75"
"\xFF\xD0"

Нашла на одном из сайтов способ протестировать работоспособность шеллкода, пытаюсь сделать это:

char shellcode[] = "\x68\x63\x6d\x64\x20\x8b\xc4\x6a\x01\x50\xb8\xec\x27\x3d\x75\xff\xd0";
    _asm
    {
        lea eax, shellcode
        jmp eax
    }

Однако программа вылетает по ошибке. Сообщение об ошибке похоже на переполнение буфера. Помогите, пожалуйста, разобраться, почему мой шеллкод не работает?

Ответы

Ответов пока нет.