Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <sys/stat.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- int val;
- // Otwieramy nasz plik wykonywalny
- FILE *fmain = fopen(argv[0],"rb");
- // Tworzymy tymczasowy plik
- char tmpname[strlen(argv[0])+5];
- strcpy(tmpname,argv[0]);
- strcat(tmpname,".tmp");
- FILE *ftmp = fopen(tmpname,"wb+");
- chmod(tmpname,0777);
- // Kopiujemy bajt po bajcie
- int ch;
- while ((ch = fgetc(fmain)) != EOF) fputc(ch, ftmp);
- // Tutaj można zmodyfikować ftmp
- fseek(ftmp,-sizeof(int),SEEK_END);
- int x = getw(ftmp);
- if (x == 0x55665566) {
- fseek(ftmp,-sizeof(int)*2,SEEK_END);
- val = getw(ftmp);
- val++;
- fseek(ftmp,-sizeof(int)*2,SEEK_END);
- putw(val, ftmp);
- } else {
- putw(1, ftmp);
- putw(0x55665566, ftmp);
- val = 1;
- }
- printf("Liczba uruchomień: %d\n", val);
- // Zamykamy i podmieniamy
- fclose(fmain);
- fclose(ftmp);
- rename(tmpname,argv[0]);
- return 0;
- }
- // // Ustawia pozycję na jeden int przed końcem pliku
- // fseek(ftmp,-sizeof(int),SEEK_END);
- // // Odczytuje jeden int z pliku
- // int x = getw(ftmp);
- // // Zapisuje jeden int do pliku
- // putw(ftmp,x);
- // Uwaga: Nie polec
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement