Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Process Logger

Hai problemi con i file Zip, vuoi formattare l'HD, non sai come funziona FireFox? O magari ti serve proprio quel programmino di cui non ricordi il nome! Ecco il forum dove poter risolvere i tuoi problemi.

Moderatori: Dylan666, hydra, gahan

Process Logger

Postdi Dylan666 » 24/11/04 23:41

Conoscete quelcosa come questo ma freeware?
http://winfiles32.com/PL/

È un process logger, cioè salva su file di testo i processi avviati in un lasso di tempo. Non mi serve per forza qualcosa di nascosto o client-server, e possibilmente vorrei un standalone (cioè senza installer/uninstaller).
Ultima modifica di Dylan666 su 05/12/04 02:25, modificato 1 volte in totale.
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Sponsor
 

Postdi Dylan666 » 05/12/04 02:23

A chi interessasse alla fine ho optato per questo:

Process Logger 1.5


Nome file:
ProcLog15.zip

Sito ufficiale:
http://www.keleos.com/download/ProcLog15.zip

Scaricato da:
http://www.au.horde.org/pub/winsite/winxp/sysutil/

Descrizione:
Small hidden service that logs what programs have been started and finished in the operating system. Process Logger is a freeware component of shell utility "RunIt!". Process Logger writes following events in log file: On Windows 95/98/Me: 1) start of logging; 2) what program has been tracked; 3) what program has been finished and time interval from program's track time up to program's finish time (actually, time of execution); 4) end of logging. On Windows NT/2000/XP: 1) start of logging; 2) what program has been tracked and when it has been started; 3) what program has been finished and total time of program's execution; 4) end of logging. Advantages: 1) small and quick (less than 1% of CPU usage on AMD K6-2 300); 2) hidden from inexperienced users; 3) counts total time of programs' execution; 4) freeware.
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi zello » 05/12/04 02:44

Dylan, ricordo una mia discussione (di tre o quattro anni fa) su usenet a proposito di un process logger, farne uno su win nt e derivati è una banalità.
Si tratta di scrivere una dll che non fa nulla, salvo registrare l'eseguibile che l'ha caricata, e forzarne il caricamento nello spazio di indirizzamento di ogni processo (e c'è una chiave del registry per ottenere questo comportamento). Non so se funziona con i processi a 16 bit, ma ormai non è che siano poi molto usati.
Se ti interessa posso anche provare a buttare giù due linee di codice.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Dylan666 » 05/12/04 13:45

Ti spiego da cosa nasce la mia idea, così magari vengono fuori nuovi spunti o anche problemi: esistono spyware o software in conflitto con altri che vengono lanciati per un paio di secondi in modo random o comunque in seguito a un'operazione non indviduabile, giusto il tempo per creare casino e poi risparire nel nulla. In questi casi il ProcessExplorer è un manna, ma talvolta l'apparizione del processo nell'elenco è talmente veloce che non si riesce nemmeno a prendere nota del nome dell'eseguibile...
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi Sergio1983 » 05/12/04 14:29

Dylan666 ha scritto:A chi interessasse alla fine ho optato per questo:

Process Logger 1.5


Lo recensisco in Download molto presto. Grazie Dylan.
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Postdi Dylan666 » 05/12/04 14:55

Mettetelo pure sul server a parte dato che è ormai scomparso...
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi Sergio1983 » 05/12/04 15:23

D'accordo, lo farò.
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Postdi zello » 06/12/04 00:41

Allora:
1) se non ce l'hai, procurati un compilatore c++ per windows. DevCpp, come ambiente, va benissimo (compila perfettamente con la 4.9.8.0)
2) crea una dll dal seguente codice:
Codice: Seleziona tutto
#include <windows.h>
#include <string>
using namespace std;

#define MUTEX "ZelloProcessLogger"
#define LOGFILE "c:\\temp\\logfile.log"

BOOL WINAPI DllMain(HINSTANCE hi, DWORD dwReason,LPVOID)
{
   if(DLL_PROCESS_ATTACH==dwReason)
   {
      //acquire mutex
      HANDLE hMutex=CreateMutex(NULL,FALSE,MUTEX);
      WaitForSingleObject(hMutex,INFINITE);
      HANDLE hFile=CreateFile(
            LOGFILE,
            GENERIC_WRITE,
            FILE_SHARE_READ|FILE_SHARE_WRITE,
            NULL,
            OPEN_ALWAYS,
            FILE_ATTRIBUTE_NORMAL,
            NULL
         );
      SetFilePointer(hFile,0,NULL,FILE_END);
      SYSTEMTIME st;
      GetLocalTime(&st);
      char buf[MAX_PATH];
      GetDateFormat(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&st,NULL,(char*)buf,MAX_PATH);
      string file=buf;
      GetTimeFormat(LOCALE_USER_DEFAULT,0,&st,NULL,(char*)buf,MAX_PATH);
      file+=" ";
      file+=buf;
      GetModuleFileName(NULL,(char*)buf,MAX_PATH);
      file+=" - "+string(buf)+"\n";
      DWORD dwDummy;
      WriteFile(hFile,(void*)file.c_str(),file.length(),&dwDummy,NULL);
      CloseHandle(hFile);
      ReleaseMutex(hMutex);
      CloseHandle(hMutex);
   }
   return TRUE;
}

3) piazzala dove vuoi sul disco, diciamo c:\processlogger.dll
4) come administrator, apri regedit, vai a HKLM\software\microsoft\windows nt\currentversion\windows
5) trova (se non c'è, creala) la chiave AppInit_DLLs
6) imposta come valore la tua dll (con path e tutto)
7) vai a vedere il risultato nel file di log (c:\temp\logfile.log, se non hai modificato il sorgente).
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Dylan666 » 06/12/04 00:48

Alt, domanda: ma funge solo su win famiglia nt? Per i 9x si può fare nulla? Inoltre (lo so che va contro i tuoi principi) ma sarebbe utile una piccola interfaccia grafica dato che lo scopo finale sarebbe la rimozione di malware dil computer dei newbie guidati via forum...

PS: non ho tempo, forze, capacità, esperienza, software per testare ne compilare alcunché
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi BianConiglio » 06/12/04 07:43

Interfaccia PER COSA ? e' una dll che viene sempre lanciata e tiene traccia del lanciante... e il log e' da spulciare a mano, un'interfaccia sarebbe un editor del log nn so quanto convenga ;)


per la compilazione, scaricati dev-cpp, fai nuovo progetto, tipo DLL, copy and paste, compila. :D

se vuoi modificare la destinazione ricordati i doppi // al posto dello /
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi BianConiglio » 06/12/04 07:45

Mh pero' fare un log analyzer mica sarebbe male...
Ci vorrebbe una crew di programmatori un po' piu' ampia su pcf :)

PS : ho venduto le prime copie di StartupInterceptor :D 8) tra poco arriva il fratellino piu' piccolo freeware :D
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi Dylan666 » 06/12/04 10:07

Hai visto l'interfaccia del primo link? Magari mi interessa settare un limite massimo alla dimensione di ogni singolo file LOG; oppure potrei volere che il nome del file fosse la data e l'ora di analisi; o ancora potrei voler escludere le DLL o gli EXE; di cosine comode ce ne stanno...
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi Dylan666 » 06/12/04 16:09

Pure una bella opzione di IGNORE sarebbe utilissima dato che stiamo cercando di scovare un processo sconosciuto...

Insomma, a me servirebbero funzionalità in più del programma che ho scaricato... Quello il TXT lo crea che è una favola a gira pure su ME. Se mi devo compliare una DLL che fa le stesse cose e gira solo su NT/XP/2000 tantovale che mi tengo quello... :P :D
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi BianConiglio » 07/12/04 07:38

fattibile e' fattibile, basterebbe creare un log analyzer che si comporta secondo dviersi criteri... ma e' il tempo a mancarmi :) come detto prima, se ci fosse una crew con cui collaborare (che nn sia solo zello dato che e' preso credo quanto me), la cosa sarebbe piu' interessante
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi zello » 08/12/04 14:34

No, non funziona su win9x.
Una cosa funzionante su entrambi i sistemi potrebbe essere un hook globale, però:
1) appesantisce il sistema
2) non intercetta i programmi che non creano una finestra (quelli in console-mode), se mi ricordo bene.
Devo avere qualcosa di già scritto a proposito. Comunque, per chi ne ha voglia, la cosa è semplice:
1) si installa un hook globale
2) questo viene mappato in ogni processo
3) nella DllMain potete copiare/incollare il codice di prima.
4) l'hook stesso è un pass-through, si limita a ritornare il valore dell'hook precedente.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Dylan666 » 08/12/04 15:35

Boh, probabilmente la mia inesperienza mi porta a non vedere problematiche che ci sono, ma quello che ho scaricato io non mi pare appesantisca nulla e sembra registrare tutto.
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi zello » 08/12/04 19:19

Se (ed è un grosso se) funziona come ho spiegato, ti trovi che:
1) in ogni processo viene caricata una dll in più, il ché vuole dire memoria in meno e più lentezza nel caricamento dei programmi (anche se dovrebbe essere quasi impercettibile)
2) se è un hook CBT, come suppongo, ogni creazione/distruzione di finestre principali (e altre cosucce che non mi sovvengono) viene notificata ad una funzione della dll, e quindi si "perde tempo" (anche in questo caso, il tempo non dovrebbe essere moltissimo).
3) se ogni istanza della dll comunica con l'istanza principale (quella con l'interfaccia grafica, insomma), hai che ad ogni processo caricato deve avviarsi un meccanismo di IPC (InterProcess Communication), probabilmente una pipe o un memory mapped file. Sono altre risorse che stai impegnando, e codice in più che viene eseguito.
E' vero comunque che il tempo perso e le risorse impegnate potrebbero essere modesti.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Dylan666 » 08/12/04 19:24

Hai un programma particolare che mi consigli per farmi/farti vedere quante risorse usa il logger?
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi zello » 08/12/04 19:43

No, purtroppo no. Ma se non noti rallentamenti, beh, allora è tutto ok.
Provo a darti un'idea di come funziona il process logger che ho in testa, scusami se sono troppo tecnico, dimmi quando la cosa diventa oscura
1) in windows esistono gli hooks: non sono altro che funzioni che l'utente può installare, e che vengono notificate quando succedono determinate cose (praticamente: tu dici a windows "ehi, quando crei una finestra, mandami un messaggio a questa funzione)
2) gli hooks possono essere locali ad un thread (ricevono i messaggi di notifica solo relativi a quel thread), oppure possono essere globali al sistema.
3) ogni processo, sotto windows, non condivide memoria con gli altri processi (sto semplificando, non correggetemi). Quindi windows non potrebbe notificare alcunché alla tua funzione, se questa non viene caricata nello spazio di memoria di tutti i processi, perché semplicemente "non la vedrebbe" all'interno del processo (parlo degli hook globali)
4) gli eseguibili non possono essere caricati nello spazio di memoria di altri eseguibili; l'unica cosa che può essere "mappata" (si dice così) è una dll. Morale: la tua funzione deve essere in una dll.
5) quindi, per ogni processo, windows carica l'eseguibile, le sue dll, e in più la dll in cui hai messo la funzione di notifica (hook)
6) la funzione di notifica riceve notifiche a seconda del tipo di hook che hai installato, nel caso di un hook CBT (che in questo caso è quello più usato) la tua funzione viene chiamata sostanzialmente quando crei o distruggi una finestra, quando l'attivi e quando la ridimensioni (per i curiosi qui ci sono i dettagli di msdn)
7) ora, la tua dll dovrà avvertire l'eseguibile che ti fa vedere i processi in esecuzione, ma questo è in un altro spazio di memoria, non può semplicemente chiamarne una funzione. Deve ricorrere a uno dei metodi in cui su windows due processi possono scambiarsi messaggi (sono parecchi: pipes, mailslots, memory mapped files, sockets sono i principali, ma ce n'è molti altri). Nel mio esempio di prima questo non avveniva perché mi limitavo a scrivere il nome del nuovo processo su un file, ma - se noti - per evitare che più dll si mettessero a scrivere contemporaneamente, creavo un Mutex (Mutually Exclusive) che permetteva la scrittura ad una dll alla volta. I mutex sono kernel objects (così come tutti i meccanismi che ho citato sopra, salvo i sockets), e i kernel objects sono risorse relativamente limitate nel sistema.
Questo è come lo farei io, non è detto che chi ha fatto il programma da te citato non abbia seguito una tecnica totalmente diversa.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi Sergio1983 » 09/12/04 00:58

Sergio1983 ha scritto:
Dylan666 ha scritto:A chi interessasse alla fine ho optato per questo:

Process Logger 1.5


Lo recensisco in Download molto presto. Grazie Dylan.


http://www.pc-facile.com/Process_Logger_s317/

Dylan666 ha scritto:Mettetelo pure sul server a parte dato che è ormai scomparso...


In che senso scomparso? Ha pure una Home Page... :undecided:
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Prossimo

Torna a Software Windows


Topic correlati a "Process Logger":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti