Sí, hay varias posibilidades de hacerlo, y una gran parte de los ataques se basan en la conexión de archivos DLL.
Y esta es también la causa, por la que las versiones de Windows más nuevas y más recientes contienen políticas normalmente más estrictas y más estrictas sobre el manejo de dll.
El objetivo principal es crear una dll falsa , que solo envuelve algunas de las llamadas a la API en su dll original, y también hace otra cosa. El objetivo del atacante es, en tales casos, permitir que se cargue el dll falso de la aplicación que se va a descifrar, en contra de su versión original.
La alternativa a esta solución es cuando la dll original obtiene algún tipo de hack binario. Es más difícil.
El funcionamiento interno de la DLL enganchada es el siguiente:
- en abierto: abre también la dll original, no modificada con una llamada
dllopen()
, y encuentra la dirección de las llamadas de api también en ella
- también contiene la versión falsa de las llamadas api enganchadas
¿Cómo se puede inyectar la DLL enganchada en la aplicación?
La solución más común es colocar esto en el mismo directorio donde se encuentra el archivo que se va a enganchar. Al iniciar un ejecutable, Windows busca sus archivos DLL siempre en el mismo directorio primero. Esto es lo que hace la mayoría de las grietas de protección / activación de copia de software.
Una segunda posibilidad es colocar la dll del envoltorio en algún lugar del PATH, pero aún antes de C:\windows\...
. Las dll se buscan en el PATH, como los ejecutables también.
Una tercera posibilidad es usar un depurador o la API de Windows originalmente diseñada para la depuración. Con él puedes manipular el código de apertura dll del ejecutable ejecutable. También es difícil, aunque también es realmente útil.