GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – /proc/pid/environ nach Prozessstart ändern?

$ k=v p &
[1] 3028

Gibt es eine Möglichkeit für p um den Inhalt von /proc/3028/environ zu ändern ganz zu schweigen von k=v während p läuft noch?

Akzeptierte Antwort:

Unter Linux können Sie den Wert der Umgebungszeichenfolgen auf dem Stack überschreiben.

Sie können den Eintrag also ausblenden, indem Sie ihn mit Nullen oder irgendetwas anderem überschreiben:

#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;
}

Ausführen als:

$ 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

das k=v wurde mit überschrieben

Linux
  1. Linux – Wie liest man unter Linux aus /proc/$pid/mem?

  2. /proc/[pid]/pagemaps und /proc/[pid]/maps | Linux

  3. Wie entschlüsselt man /proc/pid/pagemap Einträge unter Linux?

  4. Wie lese ich unter Linux aus /proc/$pid/mem?

  5. Wie stelle ich Swapiness pro Prozess für Linux ein?

Eine Anleitung zum Dateisystem „/proc“ unter Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Ändern Sie den Prozessnamen in Linux

Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

Ändern Sie /proc/PID/environ nach dem Prozessstart