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

    [c/c++] Proteggere un processo

    Salve a tutti, sto scrivendo un programma "firewall", il funzionamento in se' x ora è (quasi) perfetto, ma non è per nulla protetto da "kill".
    Il mio problema?
    Non riesco a trovare una funzione in c/c++ che impedisca che il processo venga chiuso.
    Anche xk, un firewall che si lascia chiudere così.. è proprio uno skifo XD

    ...Consigli?

  2. #2
    scusa, ma se uno ha accesso (fisico o via ssh) alla tua macchina ed ha ottenuto i permessi di root penso che il tuo ultimo problema sia che ti killi il firewall.
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Quello che stai facendo è interessante e richiede delle conoscenze nell'ambito dei sistemi operaivi. in pratica devi gestire l'handler per i segnale del proceso frirewall.
    in generale è possibile ignorare la system call kill con parametro 5 (SIGTERM) mentre non è possibile ignorare la kill con parametro 9 (SIGKILL) da nessun processo nello spazio utente, a valle della quale è deallocato dalla memoria principale.
    Forse non è molto chiaro quello che ho scritto, puoi trovare info più dettagliate e chiare a:

    http://www.lilik.it/~mirko/gapil/gap...l#x315-1710009

  4. #4
    Non è esattamente così:
    Io sto creando questo firewall "per la folla".

    Se uno conosce il nome del processo, può creare un eseguibile con una function
    codice:
    system("taskkill /f /im nomeprocesso.exe")
    ...e il firewall sarebbe down, capite che se il programma in questione fosse un trojan, killerebbe il firewall e passerebbe tranquillamente alla funzione connect.
    Sbaglio?

    Grazie 1000 puntino, adesso vedo un po' se riesco a risolvere coi documenti che mi hai passato

  5. #5
    pensavo che tu fossi su linux, dove se non hai i privilegi assegnati alla esecuzione del processo non puoi fermare il processo, per windows non ho idea
    ciao
    sergio

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Proprio per i motivi che ti ho spiegato un processo in spazio utente viene killato.
    Devi fare in modo che il tuo processo si rifiuti di accettare il segnale di kill.
    Per farlo si potrebbe agire sull'handler almeno nel mondo unix

  7. #7
    Ma per "spazio utente" tu intendi un user normale, non system giusto?
    Be' questo firewall si avvia in contemporanea al sistema operativo ed è sotto user "system"
    ...Cambia qualcosa?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Un vero firewall gestisce i pacchetti a livello kernel e si installa come device driver (almeno il core), appunto il "packet filter driver".

    Un device driver non puo' essere terminato dagli utenti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Vagando x il NET ho trovato anche questo però: http://www.alexmark.net/?pag=vegashield

    Una function del genere impedisce anche il kill da parte di system :|
    testato, funziona ma...
    ...saperla quella function! XD

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma quello e' un programma non una funzione ...!

    Ed e' un programma che lavora a ring 0 (come un device driver, anzi, e' un device driver) cosa che dovrebbe fare normalmente un firewall.

    Non puoi utilizzare un tool (di terze parti, da distribuire con il tuo programma, da installare come amministratore e di cui non conosci l'affidabilita' ...) per fare in modo che il tuo "firewall" non venga chiuso ... e' assurdo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.