2011-06-06 6 views
5

Estoy tratando de implementar algunas funciones básicas de eliminación de errores en mi aplicación. Un área en la que quería centrarme en particular, es la de evitar que las personas tomen fácilmente un volcado de memoria utilizable de mi aplicación. Leí el artículo en: http://www.codeproject.com/KB/security/AntiReverseEngineering.aspxAnti depuración - Prevención de volcados de memoria

y eso me dio un montón de consejos sobre cómo detectar si hay un depurador presente, así como alguna información sobre cómo podría evitar los volcados de memoria. Pero el autor señala que uno debe tener cuidado con el uso de estas técnicas, como eliminar el encabezado ejecutable en la memoria. Él menciona que puede haber ocasiones en que el sistema operativo u otros programas quieran usar esta información, pero no puedo ver para qué propósito.

alguien tiene algunos consejos en cuanto a cómo podría dejar de ingeniería inversa del dumping mi programa?

Estoy en Windows.

Saludos cordiales,

Philip Bennefall

Respuesta

3

No hay forma razonable para evitar que alguien capturar un volcado de memoria de su proceso. Por ejemplo, podría adjuntar un depurador de kernel al sistema, romper toda ejecución y extraer el volcado de proceso del depurador. Por lo tanto, me enfocaría en hacer el análisis más difícil.

Aquí están algunas ideas:

  • Ofuscación y cifrar su código ejecutable. Descifre en memoria solamente, y no mantenga el código descifrado por más tiempo de lo que lo necesita.

  • No almacene información confidencial en la memoria durante más tiempo de lo necesario. Use RtlZeroMemory o una API similar para borrar los búferes que ya no usa. Esto también se aplica a la pila (variables locales y parámetros).

Cuestiones relacionadas