2009-09-19 11 views
7

Sé que WinAPI tiene funciones de piratería incorporadas.C++ y protección de memoria de proceso

Incluso les acostumbrado en C# con Pinvoke ... Para cortar Buscaminas ... Era fácil ... Así que ...

cómo podía proteger a mi aplicación de edición de la memoria del proceso, negar inyección DLL y otras formas de piratería. ¡¿CÓMO?!

Esperanza WinAPI tiene algo así como nula DontTouchMeOrIWillTerminateYou(bool protect) ...

+2

La redacción de esta pregunta podría ser mejor, pero la pregunta en sí misma vale la pena. +1 –

+0

relacionado: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –

+0

¡La fraseología es fina !!! +1 para eso y para una buena pregunta! – Narek

Respuesta

9

Control de acceso en Windows está en función de cada objeto. Si desea proteger el objeto de proceso, debe configurar la ACL del objeto de proceso, ya sea cuando se crea el proceso (a través de lpProcessAttributes of CreateProcess) o después (a través del SetKernelObjectSecurity). Si agrega una entrada de "denegar todo" a la ACL, los intentos de abrir el proceso por parte de un atacante fallarán.

Por supuesto, el propietario del proceso (y por lo tanto cualquier código malicioso ejecutado por el usuario) puede cambiar la ACL de nuevo a lo que era, sin embargo, es posible que el código malicioso no esté preparado para hacerlo. Para evitar ataques del espacio de usuario de manera efectiva, debe ejecutar el proceso como un usuario no interactivo (por ejemplo, LocalSystem).

Ninguna cantidad de protección puede evitar ataques del espacio del kernel, por lo que cualquiera que pueda instalar controladores también puede piratear cualquier proceso en el sistema.

+0

1. ¿Hay alguna forma de detectar la aplicación de iniciador? 2. ¿Puedo detectar que atacar y desactivar al atacante (bloqueo instantáneo de PC o algo así ...) – user175908

4

¿Hackear? No. Se llama depuración (en su mayor parte)

Y la respuesta breve a su pregunta es "No, no puede hacer eso". Escuché que en Vista y luego hay algunos procesos de SO que no puedes depurar (procesos de DRM y me gusta), pero no estoy seguro si puedes hacer que tus procesos se ejecuten de esa manera.

La verdadera pregunta es por qué quieres hacer eso, y ¿no tienes cosas más importantes de qué preocuparte (por ejemplo, rendimiento y usabilidad, sin mencionar la corrección de tu software)?

+0

Necesito rendimiento Y seguridad. – user175908

1

Acerca de la edición de memoria, una forma trivial de detectarla sería mantener una suma de comprobación para algunos de sus datos.

+0

Los valores siempre cambian ... – user175908

0

No implemente/ejecute su proceso en una máquina controlada por el usuario final: en su lugar, ejecute su proceso en su propia máquina y permita que los usuarios finales se comuniquen con su proceso a través de Internet.

+0

¿Puede llamarse LAG ??? – user175908

Cuestiones relacionadas