Come garantire l'isolamento del processo e non interrompere Windows. NET blocco blocco file isolato NRE Come recuperare un file isolato

4

Quindi sto cercando di bloccare un file di archiviazione isolato nella mia applicazione client C# in modo che più istanze della mia applicazione non possano accedervi contemporaneamente. Sto usando la seguente sintassi:

LockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore); lockStream.Lock(0, 0);

Questo codice fa sì che la mia applicazione lanci una NullReferenceException all'interno del metodo FileStream.Lock del framework. Ho provato a utilizzare un valore diverso da zero per la lunghezza. Ho provato a scrivere un byte in un file e poi ho bloccato solo quel byte. Non importa quello che faccio, la stessa NullReferenceException mi perseguita. Qualcuno sa se questo è possibile con l'archiviazione isolata?

Inoltre sto esaminando questa tecnica in un'applicazione Silverlight, Silverlight supporta il blocco dei file? I documenti MSDN sembrano indicare che non lo è, ma ho visto questo post di C# MVP che dice che lo è.

Aggiornamento: Microsoft ha corretto un bug che ho inviato su Connect, ma non è stato rilasciato nella versione 4 del framework. Dovrebbe essere disponibile, si spera, nel prossimo SP o nella versione completa.

0

Sono stato in grado di aggirare questo errore utilizzando la riflessione per chiamare il metodo di blocco sul campo IsolatedStorageFileStream del privato "m_fs" in questo modo: lockStream = new IsolatedStorageFileStream("q.lck", FileMode.OpenOrCreate, isoStore); FileStream m_fs = typeof (IsolatedStorageFileStream) .InvokeMember(("m_fs"), BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, lockStream, null) as FileStream; m_fs.Lock(0, long.MaxValue); - bsiegel 05 marzo 10 05/03/2010 15:57:55

  • 2 risposte
  • Ordinamento:

    Attività

4

Sembra un bug in Framework. Forse mi sbaglio, perché è davvero troppo grande per essere vero.

Osservando il codice sorgente di .NET 3.5 SP1 con un riflettore, si scopre che IsolStorageFileStream chiama il costruttore di base senza dimensioni (FileStream()), risultando in una classe di base non inizializzata. IsolatedStorageFileStream istanzia un FileStream e lo usa in tutti i metodi che sovrascrive (Write, Read, Flush, Seek, ecc.). È strano che non utilizzi direttamente la sua classe base.

Ma lock e unlock non vengono sovrascritti e necessitano di un campo privato (_handle) che sia ancora nullo (poiché il costruttore utilizzato è senza parametri). Presumono che non sia nullo, lo riproducono e chiamano l'NRE.

Per riassumere, il blocco e lo sblocco non sono supportati (o non funzionano).

Come recuperare i miei file cancellati dall'antivirus Eset NOD32” è una richiesta che si vede spesso su Internet. Tuttavia possibili soluzioni questo problema non è tanto, il che spesso crea la sensazione che non ci siano modi per restituire i documenti persi.

Prima di tutto, devi capire che l'antivirus non bloccherà o eliminerà mai un file che in un modo o nell'altro non ne pregiudica il funzionamento sistema operativo o altri programmi installati.

Di conseguenza, se il tuo documento è stato cancellato, puoi tranquillamente sospettare che sia dannoso. Tuttavia, ci sono anche file che modificano semplicemente il programma, interferendo con i suoi processi, ma non rappresentano di per sé una minaccia.

Esistono modi per recuperare un file eliminato da un antivirus? Sicuramente c'è! In questo articolo, vedremo cos'è l'applicazione Eset NOD32, le caratteristiche per lavorarci e metodo efficace recuperare i file cancellati dall'antivirus.

Cos'è Eset NOD32?

Per nessuno dentro mondo moderno Non è un segreto quanto siano importanti e, soprattutto, quanto siano rilevanti le applicazioni antivirus. Consentono non solo di eliminare la stragrande maggioranza dei file dannosi, ma aiutano anche a prevenire una possibile minaccia ancor prima che si manifesti, danneggiando il sistema in un modo o nell'altro.

antivirus Imposta NOD32, che è più comunemente indicato semplicemente come NOD32, è un intero pacchetto di antivirus Software, creato dalla società slovacca Eset nel 1987.

Ci sono due edizioni del programma:

  • versione casalinga.
  • Versione aziendale.

La principale differenza tra la versione business e la versione home è la capacità di farlo telecomando e la presenza di protezione multipiattaforma. Non meno piacevole è la funzionalità che consente di personalizzare in modo semplice e flessibile il programma per qualsiasi esigenza.

Imposta NOD32. Come abilitare o disabilitare l'antivirus?

Accade spesso che durante l'installazione di un determinato programma, ci venga richiesto di disabilitare l'antivirus, perché altrimenti "mangerà" un file importante senza il quale l'applicazione semplicemente non può essere avviata.

Un altro motivo comune per cercare risposte alla domanda sull'abilitazione / disabilitazione dell'antivirus è l'obiettivo di ridurre il consumo di risorse del "difensore". È qui che influisce la particolarità del lavoro degli antivirus: di solito occupano una quantità abbastanza grande di memoria anche quando sono in uno stato passivo e quando si avviano altri programmi "pesanti", a volte è necessario sospendere la protezione.

Quindi, come si completa l'attività di abilitazione o disabilitazione di NOD32? Diamo un'occhiata a questo problema nelle istruzioni seguenti.

1. Avvia l'applicazione Imposta NOD32 e vai a Impostazioni.

2. Nella finestra che si apre, troverai tutti i pacchetti di servizi NOD32 installati. Visita ognuno e abilita/disabilita le opzioni in base alle tue esigenze.

Imposta NOD32. Quarantena antivirus ed esclusioni.

Quarantena- un repository che è necessariamente presente in qualsiasi antivirus, indipendentemente dal produttore e dalla versione (domestica o aziendale). Memorizza tutti i file sospetti che, secondo l'antivirus, in un modo o nell'altro possono danneggiare il tuo sistema operativo.

Vale la pena notare il fatto che nessun documento, anche se si tratta di un trojan, viene eliminato all'istante. Prima di tutto, la minaccia che ne deriva viene neutralizzata: il file viene messo in quarantena e l'antivirus attende pazientemente la decisione responsabile dell'utente in merito ulteriore azione- puoi eliminare il documento infetto o contrassegnarlo come eccezione, che analizzeremo poco dopo.

Come trovare la quarantena Imposta antivirus NOD32? Molto semplice! Diamo un'occhiata alle istruzioni qui sotto.

1. Correre Imposta NOD32 e vai alla sezione Servizio.

2. Apri una scheda Fondi aggiuntivi. Si trova nell'angolo in basso a destra.

3. Apparso davanti a noi lista completa servizi aggiuntivi forniti da Eset come parte del suo antivirus. Aprire Quarantena.

4. Nel menu che si apre, NOD32 ti dà pieni diritti per gestire tutti i file isolati.

Abbiamo trovato quarantena e lo trovò funzioni principali:

  • Isola file. Questa opzione ti consente di trovare manualmente un file dannoso e bloccarlo se l'antivirus non è in grado di farcela da solo.
  • Ristabilire. Un'opzione che consente di ripristinare un file bloccato accidentalmente.

Il semplice ripristino di un documento isolato non sempre evita ulteriori blocchi. Questo può essere cambiato? Consideriamo.

1. senza lasciare la finestra Quarantena, fai clic con il pulsante destro del mouse sul file che desideri sbloccare.

2. Scegliere un'opzione Ripristina ed escludi dalla scansione.

3. Se sei sicuro delle tue azioni, fai clic . Se non sai se il file è pericoloso o innocuo, ti consigliamo di fare clic su NO.

Eset NOD32 file cancellati. Come recuperare?

antivirusè l'unica barriera che trattiene un numero incredibilmente elevato di possibili minacce in grado di infiltrarsi nei nostri computer tramite Internet. È del tutto naturale che blocchi assolutamente tutti i file con un meccanismo di funzionamento simile; tali documenti che in un modo o nell'altro interferiscono con i processi di sistema o software.

Sfortunatamente, gli antivirus non sono in grado di differenziare i file, perché qualsiasi file dannoso può facilmente camuffarsi da processo di Windows e distruggere gradualmente il computer dall'interno.

Di conseguenza, il programma cerca in tutti i modi di proteggere il PC, bloccando tutto ciò che, a suo avviso, rappresenta una certa minaccia. Nella maggior parte dei casi, i documenti bloccati possono essere facilmente ripristinati semplicemente facendo un'eccezione, ma occasionalmente rimozione completa se l'antivirus considera il file estremamente pericoloso.

Recupero Partizione Starus sarà un buon aiuto nel lavoro quotidiano con il file system. L'applicazione ti solleverà da qualsiasi preoccupazione sui documenti personali a lungo termine e ti aiuterà a recuperare un file di qualsiasi formato, indipendentemente da come l'hai perso.

Puoi valutare tutte le possibilità di "restituire il perduto" prima di registrare lo strumento Starus Partition Recovery. Scarica il programma per recuperare i documenti personali cancellati dall'antivirus e provalo gratuitamente. IN versione di prova tutte le funzioni sono disponibili, inclusa l'anteprima dei file recuperati. La finestra di anteprima ti darà l'opportunità di assicurarti che un particolare file non sia danneggiato o sovrascritto e sia completamente recuperabile.

Speriamo che l'articolo ti sia stato utile e ti abbia aiutato a risolvere le domande poste.

Come isolare i processi sospetti in Windows e non interrompere il sistema operativo stesso? Come creare un affidabile e compatibile con Software Windows una sandbox senza virtualizzazione hardware e intercettazioni delle funzioni del kernel, ma utilizzando i meccanismi di sicurezza incorporati documentati del sistema operativo? Parleremo dei problemi più comuni che devono affrontare gli sviluppatori (e in definitiva i consumatori) di sandbox software. E, naturalmente, offriremo la nostra soluzione :).

Introduzione, o quanto è brutto vivere senza una sandbox

Tra i professionisti ci sono diversi assiomi di cui non amano parlare. E per quanto riguarda gli assiomi? Sono e sono. A tutti sembra chiaro, come due più due. Ad esempio, uno di questi: gli antivirus basati su firma non proteggono. Bene, cioè, non proteggono, e basta. Molte cose sono state dette e raccontate su questo molte, molte volte. Con esempi, belle presentazioni, balli e balli. E le epidemie di ogni sorta di cose brutte come il ransomware sono una delle prove dell'inefficienza delle tecnologie di firma ed euristiche. Tutti i tipi di crittografi e offuscatori risolvono con successo il problema della protezione dal rilevamento di malware già noti e da tempo questo malware non viene rilevato dagli antivirus. Questa volta è sufficiente perché qualcuno si senta male e qualcuno bene.

Cioè, non si tratta nemmeno di 0day: puoi prendere il vecchio noto malware barbuto, trasformarlo, rimuovere le firme comportamentali (lavora per un paio di giorni per una persona pigra) e usarlo di nuovo, e poi ancora, e ancora, finché non ti annoi o finché non ti mettono in galera. Allo stesso tempo, le persone che hanno venduto la cura in modo che questa cosa più "brutta" non arrivasse mai, sembrano non avere nulla a che fare con essa; pubblicano una specie di bollettino con facce serie e parlano di igiene su Internet, dimenticando di dire che se questa stessa igiene viene osservata completamente, allora gli antivirus, soprattutto quelli a pagamento, praticamente non servono.

Sandbox e caratteristiche della loro implementazione

Quindi, gli antivirus non salvano e talvolta rompono ciò che è già presente. "Avviciniamoci alla protezione dall'altra parte e isoliamo i processi l'uno dall'altro", ha detto qualcuno infinitamente intelligente. In effetti, è fantastico quando i processi sospetti vengono eseguiti in una sorta di ambiente isolato chiamato sandbox. Il malware in esecuzione nella sandbox non può uscire dai propri limiti e danneggiare l'intero sistema. Questa potrebbe essere una soluzione, tuttavia ci sono sfumature nelle implementazioni sandbox esistenti...
Successivamente, discuteremo solo di tutte le complessità della creazione di sandbox, la cui conoscenza sarà sicuramente utile quando sarà necessario scegliere uno strumento di isolamento del processo o HIPS (Sistema di prevenzione delle intrusioni basato su host - sistema di prevenzione delle intrusioni per workstation).

Nuance numero 1, o una sandbox per tutti

La maggior parte delle sandbox in realtà non fornisce l'isolamento del processo. In verità, nella maggior parte delle implementazioni, il sistema protetto è diviso in due parti: attendibile e non attendibile. Nella parte fidata, processi normali, e in non fidato - isolato. Cioè, tutti i processi isolati vengono eseguiti nella stessa sandbox, hanno accesso l'uno all'altro e alle reciproche risorse, utilizzano lo stesso registro e lo stesso sistema di file.

Pertanto, il malware può prendere piede nella sandbox stessa e avviarsi episodicamente con una delle applicazioni isolate (o con diverse applicazioni isolate o con una qualsiasi di esse). Allo stesso tempo, le sandbox spesso non registrano le azioni di processi isolati. Le azioni su cui giura HIPS nei sandbox sono abbastanza passabili senza la minima reazione, adattate all'isolamento, il che non è molto buono.

Come verificare che l'isolamento sia organizzato in questo modo? Molto semplice! Esegui due applicazioni in una sandbox. Ad esempio notepad.exe e wordpad.exe. Crea con notepad.exe file di testo 1.txt.

Ovviamente questo file non verrà salvato sul desktop, ma in una directory "virtuale". Prova ad aprirlo con Wordpad (Fig. 3).



Pertanto, un file creato da un'applicazione in modalità sandbox può essere aperto utilizzando un'altra applicazione in modalità sandbox. Ammettiamolo, l'isolamento non è molto buono. Ma forse almeno ci sarà una sorta di protezione dal record? Cambiamo il contenuto (Fig. 4).


E salviamo. E ora proviamo ad aprire il file 1.txt usando notepad.exe. Ovviamente, eseguiamo notepad.exe nella sandbox (Fig. 5).


Ed ecco di cosa abbiamo parlato. Due applicazioni isolate non sono isolate l'una dall'altra. Si scopre che tale isolamento è stato reso non del tutto chiaro perché. Anche un ransomware senza accesso alle cartelle locali sul computer può crittografare tutto nella directory virtualizzata e, se sei fortunato, anche sulle risorse di rete, poiché le impostazioni della sandbox sono le stesse per tutte le applicazioni isolate.

Nuance numero 2, o sottoisolamento

Sì, i processi in modalità sandbox non possono raggiungere la parte attendibile del sistema... ma nella maggior parte delle implementazioni è di sola scrittura. Cioè, possono leggere da qualsiasi luogo praticamente senza restrizioni e spesso hanno accesso alla rete. Questo viene fatto, apparentemente, per una maggiore compatibilità, ma questo non può essere chiamato isolamento.
Prova un semplice esperimento sandbox a tua scelta. Crea una directory sul tuo disco rigido. Diciamo questo: E:\Photos . Mettici dentro, ad esempio, una fotografia (Fig. 6).


Correre Internet Explorer nella sandbox e prova a inviare l'immagine data, ad esempio, a rghost.



Quindi com'è? Accaduto? Se l'esperienza ha successo, allora non è molto buona. Ancora peggio, se la sandbox non ha la possibilità di specificare le directory a cui le applicazioni in modalità sandbox non avranno accesso. E non va affatto bene se le applicazioni isolate possono leggere i dati dalle directory dell'utente corrente.

La virtualizzazione del file system e del registro nella maggior parte delle implementazioni si basa sul principio della "copia su richiesta". Cioè, se il file deve essere semplicemente letto, viene letto dalla directory di origine se non c'è un analogo nella directory virtuale. Se lo stesso file è presente nella directory virtuale, l'applicazione isolata funzionerà con esso. Lo stesso si può dire del registro virtuale. Bene, è chiaro che quando provi a scrivere un file lungo un percorso reale, verrà scritto nel file system virtuale. Quasi sempre.

Pertanto, se il malware è "isolato" in una tale sandbox, allora sarà in grado di farlo accesso completo a tutti gli altri processi "isolati", a quasi tutti i dati nel sistema per la lettura e ai dati virtualizzati (archiviati da applicazioni in modalità sandbox) (che sono spesso comuni a tutte le applicazioni in modalità sandbox) per la scrittura.

Nuance numero 3, ovvero "facciamo un'altra bici, è così interessante"

Continua disponibile solo per i membri

Opzione 1. Unisciti alla community "site" per leggere tutti i materiali sul sito

L'appartenenza alla comunità durante il periodo specificato ti darà accesso a TUTTI i materiali Hacker, aumenterà il tuo sconto cumulativo personale e ti consentirà di accumulare una valutazione Xakep Score professionale!

Quindi sto cercando di bloccare un file di archiviazione isolato nella mia applicazione client in modo che più istanze della mia applicazione non possano accedervi contemporaneamente. Sto usando la seguente sintassi:

LockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore); lockStream.Lock(0, 0);

Questo codice fa sì che la mia applicazione lanci una NullReferenceException dal metodo FileStream.Lock della struttura. Ho provato a utilizzare un valore diverso da zero per la lunghezza. Ho provato a scrivere un byte in un file e poi ho bloccato solo quel byte. Non importa quello che faccio, la stessa NullReferenceException mi perseguita. Qualcuno sa se questo è possibile con l'archiviazione isolata?

Inoltre sto esaminando questa tecnica in un'applicazione Silverlight, Silverlight supporta il blocco dei file? I documenti MSDN sembrano indicare che non è così, ma ho visto questo post di MVP che dice di sì.

Aggiornamento: Microsoft ha corretto un bug che ho inviato a Connect, ma non è stato rilasciato nella versione 4 del framework. Dovrebbe essere disponibile, si spera, nel prossimo SP o nella versione completa.

4

2 risposte

Sembra un bug in Framework. Forse mi sbaglio, perché è davvero troppo grande per essere vero.

Esaminando il codice sorgente di .NET 3.5 SP1 con Reflector, è possibile scoprire che IsolStorageFileStream chiama il costruttore di base adimensionale (FileStream()), che risulta in una classe di base non validamente inizializzata. IsolatedStorageFileStream istanzia un FileStream e lo usa in tutti i metodi che sovrascrive (Write, Read, Flush, Seek, ecc.). È strano che non utilizzi direttamente la sua classe base.

Ma il blocco e lo sblocco non vengono sovrascritti e richiedono un campo privato (_handle) che è ancora nullo (perché il costruttore utilizzato è senza parametri). Presumono che non sia nullo, lo riproducono e chiamano l'NRE.

Per riassumere, il blocco e lo sblocco non sono supportati (o non funzionano).

Penso che tu sia costretto a utilizzare altri metodi di blocco come Mutex o Semaphore.




Superiore