GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cambiar /proc/pid/environ después del inicio del proceso?

$ k=v p &
[1] 3028

¿hay alguna forma de p para cambiar el contenido de /proc/3028/environ no mencionar k=v mientras p sigue funcionando?

Respuesta aceptada:

En Linux, puede sobrescribir el valor de las cadenas de entorno en la pila.

Entonces puede ocultar la entrada sobrescribiéndola con ceros o cualquier otra cosa:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[], char* envp[]) {
  char cmd[100];

  while (*envp) {
    if (strncmp(*envp, "k=", 2) == 0)
      memset(*envp, 0, strlen(*envp));

    envp++;
  }

  sprintf(cmd, "cat /proc/%u/environ", getpid());

  system(cmd);
  return 0;
}

Ejecutar como:

$ env -i a=foo k=v b=bar ./wipe-env | hd
00000000  61 3d 66 6f 6f 00 00 00  00 00 62 3d 62 61 72 00  |a=foo.....b=bar.|
00000010

el k=v se ha sobrescrito con

Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. ¿Cómo obtengo la ruta de un proceso en Unix/Linux?

  3. /proc/[pid]/pagemaps y /proc/[pid]/maps | linux

  4. ¿Cómo decodificar las entradas de /proc/pid/pagemap en Linux?

  5. cambiar /proc/PID/environ después del inicio del proceso

Linux:¿Obtener información sobre el uso de memoria de un proceso de /proc/pid/smaps?

Linux – ¿Vincular /proc/mnt a /proc/mounts?

Linux:¿la importancia de Proc//fdinfo/0? ¿Quién lo crea?

Una guía para el sistema de archivos '/proc' en Linux

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions