Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] Impedire di rinominare un programma compilato

    Salve a tutti, avrei intenzione di mettere sul mio sito gli eseguibili di alcuni miei programmi in C/C++.
    Il mio desiderio è di impedire, una volta scaricato l' eseguibile, di poterlo rinominare...

    --------ESEMPIO-------
    Scarico il file a.exe
    Mi viene vietata la rinominazione del file in b.exe
    --------------------------

    Dal momento che non sono riuscito a trovare in rete software che riescano nel mio intento, ho pensato di mettere mano sul codice sorgente del programma...
    Qualcuno sa se esiste una funzione che impedisca ad un file,una volta compilato, di essere lanciato se rinominato?
    O magari un semplice controllo che confronta il nome originario dell' eseguibile con quello modificato dopo download?
    Grazie per le risposte.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Impedire di rinominare il file, assolutamente no.

    Al massimo puoi inserire nell'eseguibile un controllo dei processi attivi e se non riscontri quello giusto, termini il programma.

    Ma, per curiosita' ... dato che una richiesta del genere e' quanto meno "bizzarra" ... a cosa ti serve fare una cosa del genere?

  3. #3
    Mah, niente di bizzarro. Mi sono chiesto se downloadato un mio eseguibile tizio.exe fosse possibile impedire ad un utente caio di mettere sul suo sito il mio eseguibile sotto il nome caio.exe..

    Vorrei impedire la seguente possibilità:
    ---------------------------------------------------------------------
    Caio scarica dal mio sito il file tizio.exe
    Caio mette sul suo sito il mio file con nome caio.exe
    ---------------------------------------------------------------------

    Puoi spiegarmi meglio in cosa consiste il tuo suggerimento?
    Si implementa nel codice?
    Grazie

  4. #4
    fai un controllo sui processi attivi ( non è sicuro ) vedi se qualcuno esiste con il nome a.exe e poi confronta il pid di quel processo con quello corrente!
    PaTeR
    From Ban to Life

  5. #5
    Puoi spiegarti meglio?
    Va implementato nel codice c?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    La soluzione più semplice è controllare il valore di argv[0] nel main del programma. Controlla che il nome del file (che viene automaticamente passato al tuo programma quando esso viene lanciato) corrisponde con il nome che tu ti aspetti. Ecco un esempio:
    codice:
    #include <stdio.h>
    
    int main(int argc, char **argv) {
       if (strstr(argv, "pippo.exe") == NULL) {
          printf("Errore nell'esecuzione del programma|\n");
          exit(1);
       }
       printf("Il nome del file è proprio \"pippo.exe\"\n");
       return 0;
    }
    Questo semplicissimo programma funziona solamente se il nome del programma è pippo.exe.

    ATTENZIONE: in questo caso il programma funziona solo se nel nome del file non ci sono lettere maiuscole. In alternativa funziona se viene lanciato da un percorso contenente una directory di nome "pippo.exe".

    Io ti ho dato uno spunto... a te giostrarti meglio la cosa.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Gia, come soluzione è semplice ma efficace. Non ci avevo pensato.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ... lo avevo accennato nella mia risposta, ma e' comunque una soluzione "debole" ... dipende tutto da cosa ti serve ...

  9. #9
    Ringrazio tutti per la collaborazione.
    Per dovere di cronaca bisogna passare il puntatore a argv...
    Altrimenti non funge.
    Grazie a tutti!!

  10. #10
    ATTENZIONE: in questo caso il programma funziona solo se nel nome del file non ci sono lettere maiuscole. In alternativa funziona se viene lanciato da un percorso contenente una directory di nome "pippo.exe".
    La funzione strstr è case sensitive..
    Se il file si chiama provA.exe e nel controllo c'è appunto provA funziona..
    L' alternativa non l' ho testata..
    Vi farò sapere..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.