LINUX.ORG.RU

Утилита для изменения аптайма


0

0

Работает без использования машины времени.

/*
 * $ gcc hack.c -o hack
 * # ./hack <смещение в секундах>
 * например # ./hack 86400 добавит одни сутки
 */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>

int main(int argc, char *argv[]) {
	if(argc < 2) {
		printf("Usage: %s <change in seconds>\n", argv[0]);
		return 1;
	}
	int off = atoi(argv[1]);
	size_t address;
	char line[256];
	FILE* ksyms = fopen("/proc/kallsyms", "r");
	while(fgets(line, sizeof(line), ksyms))
		if(strstr(line, " wall_to_monotonic")) {
			sscanf(line, "%zx", &address);
			break;
		}
	
	fclose(ksyms);
	if(!address) {
		fprintf(stderr, "[-] wall_to_monotonic not found\n");
		exit(1);
	}

	printf("[+] wall_to_monotonic: %lx\n", address);

	int hndl = open("/dev/kmem", O_RDWR);
	if(hndl == -1) {
		perror("[-] open");
		return 1;
	}
	
	printf("[+] open\n");

	void *ptr = mmap(NULL, 0x2000, PROT_READ | PROT_WRITE, MAP_SHARED, hndl, address & ~0x0FFF);
	if(ptr == MAP_FAILED) {
		perror("[-] mmap");
		return 1;
	}

	printf("[+] mmap\n");

	struct timespec *ts = (ptr + (address & 0xFFF));

	ts->tv_sec += off;

	printf("[+] patch\n");
	munmap(ptr, 0x2000);
	close(hndl);

}
anonymous

Re: Утилита для изменения аптайма

Код не читал. Даже если и работает и делает то, что заявлено, зачем оно нужно? Мериться пипис^Wаптаймом?

Demon37 ★★★★ ()

Re: Утилита для изменения аптайма

Тебе за аптайм деньги платят?

sdio ★★★★★ ()

Re: Утилита для изменения аптайма

этот велосипед целиком копирует функционал /usr/bin/uptime ?

wfrr ★★☆ ()
Ответ на: Re: Утилита для изменения аптайма от anonymous

Re: Утилита для изменения аптайма

не хрена она не работает

akira:/tmp # uptime 6:34pm включен 3 дня 20:21, 3 пользователя, средняя загруженность: 0,10, 0,12, 0,15 akira:/tmp # ./hack 86400 [+] wall_to_monotonic: 8048564 [+] open [+] mmap [+] patch akira:/tmp # uptime 6:35pm включен 3 дня 20:21, 3 пользователя, средняя загруженность: 0,08, 0,12, 0,15 akira:/tmp #

anonymous ()
Ответ на: Re: Утилита для изменения аптайма от anonymous

Re: Утилита для изменения аптайма

> wall_to_monotonic: 8048564

для i386 это по-определению адрес из пространства процесса. и это понятно, бо в программе хватает ошибок.

// wbr

klalafuda ★☆☆ ()

Re: Утилита для изменения аптайма

Вариант на shell:

#!/bin/sh

oldDate=`date`""
date "2022010101"
uptime
date $oldDate

gaa ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.