Inyección de DLL de Windows

0

En los últimos años míos, he estado haciendo muchas inyecciones de DLL con algunos juegos indie y MMORPGs. Entiendo perfectamente cómo hacerlo, y cómo funciona para permitir que estos juegos funcionen, no como lo pretende el desarrollador.

Si soy capaz de comprometer estos juegos de manera tan fácil y rápida, ¿qué me impide hacerlo en el propio Windows en general?

    
pregunta 29.03.2014 - 02:51
fuente

3 respuestas

-1

Medidas de seguridad del núcleo. No sé mucho sobre el modelo de seguridad de memoria de Windows, porque no uso Windows y no estoy interesado en él, pero le apostaría a que hay partes de memoria que no puede modificar, no importa que. Siempre. Incluso como administrador.

¿Por qué?

Aquí hay tres razones por las que puedo pensar sin pensarlo:

  • Evitando que corrompa accidentalmente alguna parte del sistema, en otras palabras, es una cuestión de experiencia de usuario
  • Protección contra malware
  • DRM

Este último es un motivador especial para Microsoft. Microsoft envía productos DRM en Windows, en los que los publicadores de contenido confían para "asegurar" sus medios (puse comillas seguras porque DRM hace un trabajo altamente cuestionable de eso). Microsoft hace dinero con sus sistemas DRM; por lo tanto, están motivados financieramente para mantener sus sistemas DRM robustos (cuanto más sólido es un sistema DRM, más difícil es romperlo).

Ahora, sería extremadamente fácil romper el DRM si el usuario pudiera cargar cualquier cosa en su computadora, en cualquier lugar, ya que simplemente cargaría una DLL en la aplicación de medios a la que se dirigía y volcaría los datos desencriptados en el disco. Por lo tanto, *, los desarrolladores del kernel de Windows implementarán protección de memoria , lo que evita que las aplicaciones modifiquen ciertas partes de la memoria. Mi conjetura es que al menos el kernel se marcará como memoria protegida (de lo contrario, podría evitar las protecciones de memoria en otras partes del sistema), junto con el contenido protegido por DRM.

Está bien. Pero ¿cómo?

Esto es una simplificación, pero esencialmente, un kernel de sistema operativo es un puente entre el software en hardware. Siempre que un programa quiera hacer algo relacionado con el hardware de forma remota, ya sea hablando por un bus USB o accediendo a los discos o asignando memoria, se requiere pasar por el kernel. Por lo tanto, el kernel puede incluir lógica sobre qué memoria es "legal" asignar o acceder y qué no lo es. Y si una aplicación intenta modificar el espacio de direcciones de otra aplicación que se carga en la memoria protegida, la aplicación modificadora recibirá un error del kernel diciéndole que no está permitido lo que intentó hacer.

* Esta no es la única razón para implementar la protección de memoria. Cualquier sistema operativo que afirmara ser seguro pero sin protección de memoria fue implementado por idiotas, incompetentes, o más probablemente, ambos. Simplemente elegí centrarme en el aspecto DRM en este caso.

    
respondido por el strugee 30.03.2014 - 04:51
fuente
4

... porque lo que está pasando es que estás comprometiendo a tu propio sistema . Si lees el blog Old / New Thing, el autor lo llama "estar al otro lado de una escotilla hermética".

Es como preguntar qué impide que las personas entren en tu casa: todos tus amigos preguntarán "sí, pero tú cierras las puertas, ¿no?"; puedes "entrar en" tu propia casa de forma trivial, ya tienes la llave. Irrumpir en la casa de otra persona es bastante difícil si, ya sabes, nunca te dan la llave ...

    
respondido por el Clockwork-Muse 31.03.2014 - 21:20
fuente
0

Nada. El único problema que puede encontrar es obtener la ejecución o la descarga. Pero eso puede ser trivial a veces.

    
respondido por el Sighbah 29.03.2014 - 18:45
fuente

Lea otras preguntas en las etiquetas