|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[C/C++] Detecting Windows NT/2K process execution
Ciao,
sto seguendo questo esempio per capire come realizzare un driver molto simile, ma che oltre segnalare la creazione e l'arresto di un processo dia possibilità alla app. in user-space di decidere se eseguire o meno il processo stesso. Non saprei come modificare la callback definita nel driver. Che io sappia, in base a ciò che la callback ritorna il processo viene eseguito o meno... Avete dei suggerimenti? Grazie. Ultima modifica di Teo@Unix : 29-08-2011 alle 11:52. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Oppure potresti definire più di una singola callback da far implementare alle client application. Cioè, nell'esempio c'è ne solo una che viene chiamata (OnProcessEvent) indifferentemente per tutti gli eventi (processo lanciato, terminato); tu potresti crearne di specifiche, in particolare una apposta per i processi appena lanciati (che potresti chiamare OnProcessLaunched): chi è interessato a terminare i processi appena lanciati la implementerà con la sua logica particolare.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
grazie,
Ma il driver posso lasciarlo invariato allora? Hai delle info più dettagliate? Non ho mai usato gli eventi di windows tanto meno lavorato su driver... Grazie mille. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Non ho però scaricato il codice dell'esempio allegato (mi sono quindi basato solo sugli stralci di codice pubblicati nella pagina), tu l'hai consultato? Imagino che con quello in mano puoi fare un confronto, una prova e magari copiarlo pari pari per creartene una copia modificata come pensi ti serva e fare dei test.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Si in effetti sto facendo il debug del driver, almeno capisco meglio
Rimango della speranza che se modifico quello dovrei riuscire a fare quello che voglio... però è la user-app che deve determinare se eseguirlo o no e non posso permettermi di terminare il processo da user-space tramite PID, perchè significa eseguirlo comunque prima... devo bloccare prima che il processo venga eseguito. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Ci sono svariati modi, il problema che ti poni tu è quello della comunicazione/notifica driver->user mode, è più complesso perché solitamente si affronta il contrario, cioè user mode->driver.
Soluzioni varie: 1) Comunicazione tra user mode e kernel mode tramite section condivise (shared sections), regolamentate da elementi di sincronizzazione 2) Abusare della FltSendMessage dei minifilter driver 3) LPC communication (http://www.zezula.net/en/prog/lpc.html), quindi NtListenPort/NtConnectPort/etc...etc... Solitamente il metodo 3 è molto apprezzato, anche se il 2 è molto più semplice da implementare quando si utilizzano minifilter driver Scusa se non ti ho risposto via e-mail, me la sono persa nel mare di e-mail
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Grazie
In questi giorni stò provando ad usare il minifilter che Microsoft fornisce per la scansione, vedo che è già piuttosto completo... almeno per iniziare... anche se da C++ ora ho un problema con FilterReplyMessage() che ritorna 0x800700ea ... tutti i miei thread danno quell'errore .. anche se non mi sembra che questo impedisca il funzionamento corretto... l'unica cosa è che dal loro client di esempio scritto in C non succede... tu hai qualche info al riguardo per caso? EDIT: cioè è importante che vada, perchè a quanto ho capito serve a informare il driver .... mmm Ultima modifica di Teo@Unix : 01-09-2011 alle 11:30. Motivo: nessun motivo... |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: Ultima modifica di eraser : 01-09-2011 alle 11:32. |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Quote:
Ora devo implementare il driver ma vedo che già è settato per bloccare i file che la user-app segnala come positivi ai controlli... difatti facendo delle prove su file di testo funziona bene. Da lato driver hai delle linee guida su cosa aggiungere? Dovrà essere assegnato ad un software anti-virus... La soluzione adottata è già abbastanza intelligente... e credo sia molto meglio che controllare i processi all'esecuzione.. stò pensando che solitamente software antivirus fanno diverse azioni oltre il blocco dell'operazione in corso che c'è nell'esempio... immagino che dovrò ampliare le info che user-app e driver si scambiano... quindi le possibili azioni compiute dal driver, blocco, eliminazione, spostamento ... etc.. |
|
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: Ultima modifica di eraser : 01-09-2011 alle 21:02. |
||
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Un pezzo di un software anti-virus. Ovvero la parte che si interfaccia con il kernel in questo modo.
Naturalmente non è una roba per Symantec... |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
A una cosa... per fare il debug in kernel-mode cosa usi?
Io stò provando VisualDDK, l'unica cosa è che quando sono fermo su un break point e passo il mouse sopra una variabile da visualizzare crasha tutto l'ambiente, simpatico no? |
|
|
|
|
|
#18 | ||
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
A scrivere un software che ti blocca i malware in base al loro hash MD5, beh, sono capaci tutti. Ma quelli difficilmente si possono chiamare antivirus. Scrivere un programma capace di individuare e riparare infezioni causate ad esempio da Virut, Parite, Polip, Tenga, Sality, quello sì che diventa un'impresa molto più ardua, che richiede una notevole esperienza di reverse engineering, assembly, conoscenza del funzionamento del sistema operativo e molto, molto altro. Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: Ultima modifica di eraser : 02-09-2011 alle 01:13. |
||
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Sono d'accordo.
Non conosco tali tecnologie, se non in via del tutto teorica... interessante. Anche secondo me si tratta di qualcosa di molto ambizioso... ma non conosco chi se ne stà occupando. Grz dei consigli. |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:18.




















