На досуге начал изучать системные библиотеки. Наклепал вот такой код:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main (int argc, char**argv)
{
kvm_t* kd;
char errbuf[80];
struct kinfo_proc* proc;
int count, i;
char* tmpstr;
kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);
if( kd == NULL )
{
printf(«Error: %s\n», errbuf);
}
proc = kvm_getprocs(kd, KERN_PROC_PROC, 0, &count);
printf(«Count: %i\n», count);
char *tmp;
tmp = malloc(sizeof(char)*1000);
for (i=0; i
{
if (kvm_getargv(kd, &proc, 1000) != NULL)
{
strcpy(tmp, *kvm_getargv(kd, &proc, 1000));
printf(«%s, pid=%i, user=%s\n», tmp, proc.ki_pid, user_from_uid(proc.ki_uid));
}
else
{
// printf(«NULL\n»);
}
}
return 0;
}
Запускается он только под рутом. Под обычным пользователем говорит нет доступа к /dev/mem. Как заставить это работать?
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Попробуй chmod 666 /dev/mem
… и подумай, к чему это может привести.
Ну это уже следующий вопрос:) Это тупое решение, если подумать можно сделать тоже самое, но более правильно
Уж лучше suid поставить на саму прогу
Хотя тоже не секурно