Yazılımlar / Diğer Programlar
Programların Açılış Kapanış Saatlerini Takip Etme
Programların Açılış Kapanış Saatlerini Takip Etme
-
Merhaba,
Çalıştırılan uygulamaların hangi saatlerde açılıp, kapandığını denetleyip log tutabilecek bir yazılım arıyorum,
xxx.exe - açıldı: 12:10 - kapandı: 12:30
gibi.
Bildiğiniz bu tarz bi program var mı? Sevgiler.
-
tüm uygulamaların mı yoksa beli başlı uygulamalarınmı?
-
Tümüde olabilir isimleri verilenlerde olabilir hocam. Seçilenler olursa daha iyi olur ama
-
windowsun event viwere mi ne vardi sanirim yonetimsel araclarda ordan gorunuodu pcye gecince bakayim
-
Program varmi bilmem ama nasil yapilabilecegini anlatabilirim.
En mantikli yontem psSetCreateProcessNotifyRoutine ile bir callback set etmek, boylece her process baslarken sizin fonksiyonunuz cagirilir, isterseniz engelleyebilirsiniz, tum antivirusler bunu kullaniyor, ama kernel mod oldugu icin driversiz mumkun degil.
User modda yontem her process'e dll inject edip CreateProcess'i hooklamak, bu da bence pis bir is ve gereksiz boyle basit bir sey icin.
Kolaya kacarak %90 calisan ama isini gorecek pragmatik bir yontem, her saniye process listesini alip eski listede olmayanlari "started", eskisinde olup yenisinde olmayanlari "stopped" olarak loglamak.
Bir saniye sleep arasinda baslayip kapanan processleri loglamaz haliyle ama %99 isini gorur. Asagidaki ufak program bunu yapiyor. Calistiginda bulundugu dizine proclog.txt diye bir dosya acip icine loglari yaziyor.
Link: https://s3.us-east-2.amazonaws.com/dodotahribat/proclog.7z
Password: tahribat
Program penceresiz oldugu icin kapatmak icin gorev yoneticisinden bulup kapatirsin.
Kod;
#include <stdio.h> #include <time.h> #include <windows.h> #include <tlhelp32.h> typedef struct node node; struct node { char name[256]; node *next; }; void *emalloc(int n) { void *p = calloc(1, n); if (p == NULL) { exit(1); } return p; } void freelist(node *list) { if (list == NULL) { return; } freelist(list->next); free(list); } void diff(node *a, node *b, char *msg) { node *p, *q; for (p = a; p != NULL; p = p->next) { int found = 0; for (q = b; q != NULL; q = q->next) { if (strcmp(p->name, q->name) == 0) { found = 1; break; } } if (!found) { time_t t; time(&t); char buf[128]; strftime(buf, sizeof(buf), "%d.%m.%y %H:%M", localtime(&t)); printf("%s\t%s\t%s\n", buf, p->name, msg); } } } node *proclist(void) { HANDLE hSnap; PROCESSENTRY32 pe32; node *root = NULL; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap == INVALID_HANDLE_VALUE) { return NULL; } pe32.dwSize = sizeof(pe32); if (!Process32First(hSnap, &pe32)) { CloseHandle(hSnap); return NULL; } node *proc = root = emalloc(sizeof(node)); strcpy(proc->name, pe32.szExeFile); while (Process32Next(hSnap, &pe32)) { proc->next = emalloc(sizeof(node)); strcpy(proc->next->name, pe32.szExeFile); proc = proc->next; } CloseHandle(hSnap); return root; } int main() { FILE *f = freopen("proclog.txt", "wb", stdout); if (f == NULL) { return 1; } node *proc = proclist(); for (;;) { node *new = proclist(); diff(new, proc, "started"); diff(proc, new, "stopped"); freelist(proc); proc = new; fflush(f); Sleep(1000); } return 0; }
-
@cybermole
olay görüntüleyicisini kurcaladımda hocam istediğimiz gibi rapor veren biyer göremedim
AMpul bunu yazdıProgram varmi bilmem ama nasil yapilabilecegini anlatabilirim.
En mantikli yontem psSetCreateProcessNotifyRoutine ile bir callback set etmek, boylece her process baslarken sizin fonksiyonunuz cagirilir, isterseniz engelleyebilirsiniz, tum antivirusler bunu kullaniyor, ama kernel mod oldugu icin driversiz mumkun degil.
User modda yontem her process'e dll inject edip CreateProcess'i hooklamak, bu da bence pis bir is ve gereksiz boyle basit bir sey icin.
Kolaya kacarak %90 calisan ama isini gorecek pragmatik bir yontem, her saniye process listesini alip eski listede olmayanlari "started", eskisinde olup yenisinde olmayanlari "stopped" olarak loglamak.
Bir saniye sleep arasinda baslayip kapanan processleri loglamaz haliyle ama %99 isini gorur. Asagidaki ufak program bunu yapiyor. Calistiginda bulundugu dizine proclog.txt diye bir dosya acip icine loglari yaziyor.
Link: https://s3.us-east-2.amazonaws.com/dodotahribat/proclog.7z
Password: tahribat
Program penceresiz oldugu icin kapatmak icin gorev yoneticisinden bulup kapatirsin.
Kod;
#include #include #include #include typedef struct node node; struct node { char name[256]; node *next; }; void *emalloc(int n) { void *p = calloc(1, n); if (p == NULL) { exit(1); } return p; } void freelist(node *list) { if (list == NULL) { return; } freelist(list->next); free(list); } void diff(node *a, node *b, char *msg) { node *p, *q; for (p = a; p != NULL; p = p->next) { int found = 0; for (q = b; q != NULL; q = q->next) { if (strcmp(p->name, q->name) == 0) { found = 1; break; } } if (!found) { time_t t; time(&t); char buf[128]; strftime(buf, sizeof(buf), "%d.%m.%y %H:%M", localtime(&t)); printf("%s\t%s\t%s\n", buf, p->name, msg); } } } node *proclist(void) { HANDLE hSnap; PROCESSENTRY32 pe32; node *root = NULL; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap == INVALID_HANDLE_VALUE) { return NULL; } pe32.dwSize = sizeof(pe32); if (!Process32First(hSnap, &pe32)) { CloseHandle(hSnap); return NULL; } node *proc = root = emalloc(sizeof(node)); strcpy(proc->name, pe32.szExeFile); while (Process32Next(hSnap, &pe32)) { proc->next = emalloc(sizeof(node)); strcpy(proc->next->name, pe32.szExeFile); proc = proc->next; } CloseHandle(hSnap); return root; } int main() { FILE *f = freopen("proclog.txt", "wb", stdout); if (f == NULL) { return 1; } node *proc = proclist(); for (;;) { node *new = proclist(); diff(new, proc, "started"); diff(proc, new, "stopped"); freelist(proc); proc = new; fflush(f); Sleep(1000); } return 0; }
üstad bitanesin. tamda bu basitlikte birşey bakıyorduk uğramışsın kod yazan ellerin dert görmesin..
-
bu kernal mod dediğimiz nedir, neden tercih ediliyor?
-
bu kernal mod dediğimiz nedir, neden tercih ediliyor?
-
asi27 bunu yazdı
bu kernal mod dediğimiz nedir, neden tercih ediliyor?
Islemcinin bir calisma modu. Isletim sistemi ve driverlar bu modda calisir. Hic bir kisitlama olmadan tum bellege, aygitlara ve ozel islemci komutlarina erisebilir.
Antivirusler tabii ki normal programlar uzerinde tam yetki sahibi olmak icin kullaniyor, aygit ureticileri cihazlarini yonetmek icin kullaniyor, bunun disinda amaclarla da kullanilabilir, mesela yeni bir dosya sistemini sisteme tanitmak icin, ya da transparan dosya sifreleme vb isler icin.
Yeni islemcilerde bir de hypervisor mod var, sanal makinalar icin gelistirildi, isletim sistemi nasil programlari denetliyorsa bu modda isletim sistemlerini denetliyor.