hmm.... w delphi (ale na pewno tez to jest w C) jest mozliwosc wypakowywania umieszczonych w uruchomionym exec-u archiwow...
gdzies chyba widzialem mechanizm, ktory dziala rowniez w druga strone, tzn ze mozna "wpakowywac" pliki do exec-a...
ostatecznie mozesz zrobic to na zasadzie podobnej do dzialania wirusow, tzn spreparowac plik exe w taki sposob, ze bedzie sie w nim znajdowal obszar "pustego kodu", w ktorym bylaby zawarta informacja o liczbie uruchomien ("rezerwacja" przestrzeni odbywa sie na zasadzie przesuniecia skoku warunkowego w pliku egzekucyjnym - assembler), problem braku dostepu mozna rozwiazac nastepujaca:
program glowny wypakowuje program pomocniczy (wpakowany do execa), tenze mini-program zamyka program glowny i zmienia wartosc wydzielonych bajtow w pliku, a nastepnie sam sie zamyka
jednak powstaje problem jak na to zareaguja programy antywirusowe...
niestety to jest tylko teoria, jak na razie innego rozwiazania nie widze...