Возвращаемся к нашим баранам... точнее к статьям по переполнению буфера...
вот например хорошая статья:
"Stack Overflows in Action" by buLLet/UINC, публиковалась в езине "RING0, ISSUE #1" взять можно на вебхаке
В общем и целом все грамотно и легко читается(мне

) немного неряшливо выглядят цепочки из
buf[100]=0x3f;
buf[101]=0x01;
buf[102]=0xed;
buf[103]=0xff;
вместо простого
buff[] = ".......\x3f\x01\xed\xff.......";
расположенного вне какой-либо ф-ции
да и размер кода эксплоита это увеличит(первоначальный вариант то есть), но это кому как приятней и удобней
плюс если сплоит локальный то вместо забитых адресов апи можно их получать с помощью GetProcAddress,
а потом - в шеллкод. То же самое можно и к "jmp esp" сделать(поиск в пределах промапенного kernel32.dll)
ну и шеллкод хоть и самим автором писался(а это плюс) расчитан только на запуск локального cmd.exe
(ну эт понятно - сделано только ради примера)