+1 do tego co adrian17 napisał.
To powiedziawszy, tak, da się to technicznie zrobić, ale trzeba trochę zakombinować. Problemy są dwa:
- Trzeba tą wartość znaleźć w pliku. Najprościej jest ją zaszyć w tablicy między dwoma "magicznymi" wartościami, np. int64_t id[] = { 0xdeadc0d31337abcd, 156, 0xdeadc0d313370123 };. W takim przypadku można sobie łatwo napisać funkcje, która otworzy plik i znajdzie obie te magiczne wartości, sprawdzi czy jest między nimi sizeof(int64_t) bajtów odstępu (tudzież w ogóle będzie szukać tych magicznych wartości oddalonych od siebie o te 8 bajtów), i podmieni wartość. No i trzeba uważać, żeby funkcja szukająca nie znalazła sama siebie ;)
- Pod Windowsem uruchamiana aplikacja ma zblokowany dostęp do zapisu do własnego exeka. Co za tym idzie, żeby zmodyfikować exeka trzeba najpierw wyjść ze wszystkich instancji tego exeka jednocześnie odpalając inny program, który poczeka aż wszystkie te procesy się zakończą, a potem zmodyfikuje exeka. Pod Linuxem nie ma tego problemu. Nie wiem jak pod OSXem.
Oczywiście user może sobie po prostu zmienić uprawnienia do tego exeka, tak, żeby nic nie mogło po nim pisać, więc to w żadnym wypadku nie jest perfekcyjna metoda. Ale technicznie da się to zrobić.