Newsgroup: it.comp.programmare.win32
Titolo: Nascondere applicazioni

Nessuno sa come nascondere un processo a Task Manager
di WinNT4.0?????
Non voglio nascondere la finestra, almeno questo non mi importa,
ma voglio che nella lista dei programmi attivi di Task Manager
un dato processo non compaia (anche se e` in esecuzione).
Ciao e grazie, Berna.

,

Impossibile farlo, sarebbe contrario al design del sistema.
Se proprio vuoi eseguire un programma senza essere visto,
allora puoi usare la tecnica del processo parassita.
Per la teoria di base vedi l'ultimo capitolo del Richter,
per una implementazione vedi i sorgenti di BackOrifeice 2000.
In pratica sfrutti un processo ospite per creare un thread remoto
e mandarlo in esecuzione.
Sulla Task List compare il processo ospite, che sta eseguendo
anche il tuo codice.
Sent via Deja.com 
http://www.deja.com/
Before you buy.

di WinNT4.0?????
Tempo fa ci avevo guardato anche io, ma poi ho sospeso tutto perche` la
faccenda sarebbe andata per le lunghe. Ci si puo` riuscire intercettando con
uno hook i messaggi spediti dal controllo listview dentro al Task Manager, in
particolare il messaggio di notifica LVN_GETDISPINFO (il controllo usa la
tecnica di "chiedere" le stringhe alla finestra genitrice, non le memorizza
direttamente).
A parte questo ovviamente resta sempre la strada del reverse engineering,
ossia scoprire come il Task Manager memorizza quelle informazioni e andare
direttamente a modificargliele in memoria.
Beninteso: per fare tutto cio` ci vogliono sufficienti privilegi.
Bye! Lorenzo Lutti (
http://www.geocities.com/SiliconValley/Peaks/6258/
)

 direttamente a modificargliele in memoria.
La tecnica sarebbe efficace solo nei confronti di TaskManager.
Il processo non potrebbe sfuggire alle altre innumerevoli utility
di enumerazione dei processi attivi, tra cui la comodissima tlist.exe,
oppure pview.exe o pviewer.exe, oppure il PerfMon.exe.


>
Non si potrebbe creare un thread in un processo ospite, chesso' 
EXPLORER.EXE, e fare le nostre cose in quel thread? chissa' se il 
taskamanager si accorge di qualcosa...
-- 
universe::earth::internet::albion->Greetz++;
 
darX...@tin.it
 
alb...@libero.it
  Fido 2:335/234.21   
http://darxstar.cjb.net
  ICQ UIN# 11151997 - eggdrop on demand
<the trees that whisper in the evening...>

 chissa' se il taskamanager si accorge di qualcosa...
Il task manager si limita a dirti che nel processo dell'Explorer c'e` un
thread in piu`. Ma dato che questo accade normalmente (per il processo
dell'Explorer mi vengono indicati a volte 8 thread e altre volte 7 thread) e`
difficile che molti ci facciano caso...
Il vero problema e` quello dei privilegi di accesso. Che io sappia ci sono
soltanto due metodi ragionevolmente "puliti" per iniettare un thread in un
altro processo:
-Usare gli hook (funziona sia sotto a NT che sotto a 9x);
-Usare CreateRemoteThread (funziona solo sotto a NT).
In entrambi i casi, in special modo il secondo, occorrono privilegi di utente
sufficienti per farlo (parlo sempre di NT). C'e` comunque da dire che una
normale macchina NT workstation viene usata quasi sempre da un utente con
privilegi di Administrator, quindi in quel caso e` come avere Windows 9x.
--
Bye! Lorenzo Lutti (
http://www.geocities.com/SiliconValley/Peaks/6258/
)
P.S. Quel DarXstar e` lo pseudonimo di quel pazzo che bazzica in Fidonet, o e`
solo un caso di omonimia? ;-)

 -Usare CreateRemoteThread (funziona solo sotto a NT).
Ciao Lorenzo,
                        sono molto interessato all'argomento (per pura
curiosità) e volevo chiederti ulteriori spiegazioni...
Ipotizziamo di essere sotto Win9X, in che senso usi un hook?  e di che tipo?
Potresti darmi qualche input?
Ciao, grazie in anticipo :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

 Ipotizziamo di essere sotto Win9X, in che senso usi un hook?  e di che tipo?
Un qualsiasi hook globale (o comunque installato nel processo destinazione).
Quando tu installi uno hook su altri processi, il sistema operativo prende
tutto il modulo che contiene la callback dello hook e lo "carica" nella
memoria di tali processi (ecco fra l'altro perche` gli hook globali devono
risiedere in una DLL). L'OS si occupa di "risolvere" l'indirizzo della
callback in modo opportuno per ogni processo, dopodiche` ognuno di essi avra`
la sua funzione callback separata che viene chiamata direttamente nel proprio
spazio di indirizzamento.
E qui arriva il bello: dato che il sistema operativo copia l'intero modulo in
cui risiede la callback, di fatto tu assieme allo hook puoi anche trasferire
altro codice, worker threads, window procedures e tutto cio` che vuoi. E` come
se eseguissi un normale programma, senza pero` creare un nuovo processo:
utilizzi in modo parassitario lo spazio di indirizzamento del programma
"ospite".


 "ospite".
Grazie Lorenzo per l'esauriente spiegazione.
Mi scuso per il ritardo con cui ti rispondo ma ero all'estero e non ho
potuto scaricare la posta fino a ieri (trovandomi qualche centinaio di msg a
cui rispondere... !!)
Sapevo delle DLL caricate nello spazio di indirizzamento dei vari processi
(infatti usavo la DLLEntryProc con il ProcessDetach & C per un hook globale
che monitorava lo stato di inattività di mouse e tastiera, se non si usa un
qualche mezzo di interscambio (io uso un file mappato in memoria in genere)
si finisce coll'avere il tempo in cui _quel_ processo non ha utilizzato il
mouse/la tastiera...
Non sapevo però che lui si copiasse tutto ! (credevo si prendesse solo la
callback)
A questo punto mi viene una domanda: posso usare la SetWindowLong come se
stessi lavorando sul mio processo?? (un subclass di un programma esterno?)
Ciao,grazie 1000 ! :-)


 esterno?)
Certamente. Se vuoi subclassare una finestra di un processo esterno devi
necessariamente usare la tecnica degli hooks. Anzi, dato che le window
classes sono "globali" sarebbe meglio installare lo hook in tutti i
processi, altrimenti se un processo "estraneo" prova a usare la classe
andra` in crash...


 andra` in crash...
Ti ringrazio per la tua disponibilità e mi complimento per la tua
competenza. :-)
Grazie (adesso appena ho 5 minuti provo subito...)
Ciao :-)
