Bloquear programas para que no lean fuera de su RAM asignada

Bloquear programas para que no lean fuera de su RAM asignada

Me preguntaba si podría evitar que el programa A lea toda mi RAM, ya que no necesita monitorear lo que está haciendo el programa B.

También estoy en Windows 8.1 de 64 bits.

Respuesta1

Los programas que se ejecutan en Windows no pueden acceder directamente a la RAM. Accede a direcciones virtuales. Para acceder a la RAM, necesitará la ayuda de un controlador en modo kernel escrito para tal fin. (Así es como lo hacen algunas de las "herramientas sysinternals" de Mark Russinovich: instalan un controlador que viene empaquetado como un recurso dentro del .exe).

En lo que respecta a que un programa acceda a otro, cada proceso en Windows ya tiene su propio espacio de direcciones virtuales, separado y separado de todos los demás. es decir, el 0x10000 de un programa es completamente diferente del 0x10000 de cualquier otro. No importa qué dirección intente ver, siempre estará mirando la instancia de esa dirección de su propio proceso.

Sin embargo:Las API ReadProcessMemory y WriteProcessMemory permiten que los programas realicen acceso entre procesos (en términos de direcciones virtuales). Para usarlos, el proceso que realiza el "acceso" tiene que abrir otro proceso con los derechos PROCESS_VM_READ o PROCESS_VM_WRITE otorgados. Los procesos que se ejecutan dentro de su sesión de usuario normalmente tienen la capacidad de hacer esto entre sí (es decir, el descriptor de seguridad en la mayoría de los procesos permite esto para el creador del proceso... que es usted).

Sin embargo, un programa no tendría forma de saber dónde estaría algo de interés en otro proceso. Sería una búsqueda larga y agotadora de algo interesante. La gran mayoría de los intentos darían como resultado un área de "dirección no definida", especialmente en un sistema de 64 bits, especialmente en Windows 8.1 y posteriores. Incluso dentro de las áreas definidas de la memoria virtual, no es como si los programas etiquetaran rutinariamente sus áreas de memoria con información de contexto, como "el número de cuenta bancaria está aquí:" seguido inmediatamente por dicho número de cuenta.

Puede considerarse algo arrogante que cualquiera de sus procesos pueda acceder a la "memoria" (interpretada libremente) de cualquier otro. Pero recuerde, todo lo que haga con un solo ID de inicio de sesión y autorización se considera realizado por un solo usuario. es decir, son todos sus datos de todos modos.

Francamente, me preocuparía más por los datos de su disco. Todos los archivos que contienen sus datos fueron creados por usted con su ID de seguridad, por lo que cualquier programa que se ejecute con su ID de seguridad puede acceder a todos ellos. Peor aún, el valor predeterminado de Windows es crear todos los archivos con acceso de lectura otorgado al grupo "Usuarios", básicamente a todos. De esta manera, los programas que se ejecutan con otros ID de seguridad también pueden leerlos. Y dado que los archivos a menudo tienen nombres bonitos y se ubican en directorios organizados y con nombres bonitos, encontrar archivos "interesantes" como cuentas.txt no es tan difícil. El cifrado de archivos NTFS no ayudará contra un programa espía que se ejecuta en su propia cuenta. Esta es una exposición mucho, mucho mayor que el acceso a la memoria entre procesos.

información relacionada