2011-12-30 19 views
8

Estoy tratando de verificar si una aplicación intenta manipular un proceso en particular (por ejemplo, se engancha a ella). No pude encontrar un enfoque adecuado para lograr esto. ¿Es posible calcular la suma de comprobación durante el proceso de ejecución? Si no es así, ¿cómo puedo detectar esta situación?Detectando el acceso a la memoria a un proceso

+0

¿Conoces la aplicación ofensiva? ¿Y sabes cómo detectar en la aplicación que se produjo la manipulación? – rene

+0

Lo siento, no recibí tu pregunta. No sé cómo detectar la manipulación, así que no tengo idea de detectar ocurrencias de manipulación. Es por eso que pedí ayuda. –

+0

¿Cuál es el objetivo real que intentas lograr? Si intentas evitar/detectar alteraciones en tu propia aplicación, no hay nada que funcione al 100%. –

Respuesta

4

Otro proceso no puede hacer hooks en su proceso, puede modificar la memoria pero para hacer hooks este código debe estar en su espacio de direcciones, esto puede hacerse para inyectar DLL a su proceso cuando se inicia (en tiempo de ejecución inject dll es uno difícil), puede verificarlo fácilmente al listar las DLL en su proceso y buscar algunas de las llamadas de funciones en sus códigos. Para hacerlo, obtenga la dirección (GetProcAddress) de la función y el valor de búsqueda en el código (puede agregar algunas predicciones asm call para obtener un resultado de rango estrecho).

se puede comprobar lo que está mal con su archivo PE en el disco y en la memoria, cuando la inyección de DLL en tiempo de inicio fue ocurrencia entonces su archivo PE después se ha copiado en la memoria del archivo debe estar dañado, después de la última biblioteca dll debería haber sobrescrito los símbolos de depuración con importación dll adicional. Esta modificación se puede hacer en el archivo igual que en la memoria.

El mejor método, pero probablemente no le resulte fácil cuando usa el lenguaje C# es , ofusque su código. Creo que este es un buen método porque no engancha algo que no sabe cómo funciona, porque no sabe qué anzuelo debe hacer y dónde. Pero para un buen código de C#, debes encontrar un buen software para eso y probablemente no pagues un precio bajo.

+0

@gcx: ReadProcessMemory, WriteProcessMemory capturará las inyecciones de tiempo de ejecución también, la inyección de tiempo de ejecución es de otra función de inyección de proceso para colocar cuando se ejecutará con código de biblioteca de carga (en la memoria objetivo no como ganchos en destino función de memoria pero llamada ubicada en dll) – Svisstack

+0

Veo que mencionaste ofuscación. Creo que dijiste eso debido a mi referencia a "mi proceso". Remití un proceso en particular al decir mi proceso. Edité la publicación original. Perdón por la confusion. –

+1

Aquí está el mejor ofuscador gratuito que conozco: [Eazfuscator.NET] (http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx) – ken2k

Cuestiones relacionadas