Red de conocimiento informático - Material del sitio web - Cómo utilizar axproctector para cifrar programas .net

Cómo utilizar axproctector para cifrar programas .net

Se presentan los principios de algunas herramientas de protección de cifrado dotNet y se analizan brevemente sus métodos de empaquetado. Protector Remotesoft, maxtocode, .Net Reactor, Cliprotector

, themida .Net, xenocode nativo Net, compilador nativo xenocode y DNGuard.

Remotesoft protector

Debería ser un programa antiguo. El sitio web oficial parece haber sido actualizado en 2006. No hay una versión de prueba del software disponible para descargar y hay poca información al respecto. El año pasado, el software protegió un programa .Net. El programa cifrado debe distribuirse con la dll local.

Este shell puede considerarse como el shell de la capa JIT. Es un modo de encapsulación JIT que intercepta solicitudes JIT conectando la función getJit. Cada vez que se produce una solicitud jit, la biblioteca en tiempo de ejecución descifra y restaura completamente el ensamblado cifrado "in situ".

Característica: descifrado general

Descifrado: intercepta solicitudes jit a nivel del suelo y luego interrumpe. En este punto, el ensamblaje se ha descifrado por completo y se puede volcar directamente.

maxtocode

Todos deberían estar familiarizados con esto. El protector remoto debe iniciarse por delante y por detrás. Los kernels 1.x, 2.x, 3.1xy 3.2 son muy diferentes.

Características: método único de descifrado

La versión maxtocode 1.x no se ha utilizado, pero el equipo DST de Bodhi ha escrito una máquina shell para maxtocode 1.x.

El núcleo de maxtocdoe 2.x es la capa EE, cuyo cuerpo de método único se puede descifrar "in situ". El código descifrado se eliminará después de la compilación.

Descifrado: debido al descifrado "in situ", el código del cuerpo del método no puede escapar del archivo de configuración. Puede registrar el cuerpo de cada método en un archivo de configuración y completar el archivo.

Método 2: nop llama a su código de borrado del kernel. No necesita modificar los archivos del kernel para esto, simplemente restaure la segunda ubicación del enlace en mscorwks.dll. De esta forma, el cuerpo del método se descifra y se ingresa en la memoria. Todos los métodos llaman a una parte y la descargan directamente.

maxtocode 3.1x, esta versión es más común. La primera versión de maxtocode con la que entré en contacto fue la 3.10. Esta versión del kernel ha cambiado significativamente en comparación con la 2.x. Los cuerpos de los métodos ya no se descifran in situ, lo que significa que los perfiles ya no pueden monitorear el código, lo cual es una gran mejora. 3.1x es básicamente el mismo kernel, con mejoras menores en versiones posteriores.

Métodos ya preparados: reflexión directa, reflexión post-reparación.

Método 2: llame directamente a su función de descifrado del kernel para empaquetar, lo cual es simple y rápido.

maxtocode 2007 Enterprise Edition, kernel de capa Jit, que instala múltiples ganchos en la capa ee y la capa jit. Su núcleo se describe en detalle en el artículo anterior.

Decapsulación: debido a vulnerabilidades en el kernel de la capa jit, el cuerpo del método se puede restaurar mediante un método simple. Hook Jit puede simplemente restaurar el cuerpo del método para completar la decapsulación de un solo método.

Toma un lado de cada método y completa el archivo.

.Net Reactor

Un net shell muy especial. Tiene dos modos: modo aplicación y modo biblioteca.

El primer modo cifra toda la aplicación .net y crea un cargador local. Descifrar todo el proceso de cifrado es tan fácil como deshacerse de la memoria.

El segundo modo es cifrar todo el ensamblaje con una dll nativa y agregar muchos constructores estáticos y funciones de inicio, como maxtocode.

Pero después de llamar a la función de inicio, se completa todo el descifrado "in situ" del ensamblaje.

De modo que puede volcar la memoria directamente después de ejecutar la función.

Descifrado: volcado pe directo.

CliProtector

Un shell de cifrado de capa JIT, que se descubrió a finales del año pasado. Estaba desarrollando DNGuard 2.0 en ese momento y, después del análisis, descubrí que su modo de kernel era muy similar al kernel de capa jit de DNGuard 2.0 en ese momento. Poco después del análisis, descubrí una vulnerabilidad en el procesamiento del kernel de su capa jit que podría explotarse para restaurar el cuerpo del método de una manera sencilla. La misma vulnerabilidad se descubrió recientemente en maxtocode 2007 Enterprise Edition. Mi DNGuard 2.0 tiene manejo preventivo de esta vulnerabilidad.

Personalmente, creo que su compatibilidad de esquemas es mejor que la de maxtocode 2007 Enterprise Edition. Es una pena que además de tener una vulnerabilidad de la capa jit, también roba el ry y el código IL no está cifrado, como la demostración de dnguard 1.0 que publiqué, que simplemente movió el il ligeramente a una ubicación diferente, sin cifrado. Pero para el empaquetado de capas jit, no importa si está cifrado o no. Pero esto puede llevar a los crackers a descifrar el caparazón desde otro ángulo.

Características: Método único de descifrado del cuerpo

Descifrado: Jit Hook, método simple de restauración del cuerpo, igual que el descifrado de la versión empresarial maxtocode2007.

Método 2: Analizar la estructura del archivo cifrado y restaurarlo directamente (debido a que el código il no está cifrado, el algoritmo de descifrado se puede estudiar sin considerarlo).

themida.Net

themida es un poderoso shell para win32. Admite el cifrado .Net. Su método de cifrado es el cifrado general, pero tiene su ventaja anti-win32, en comparación con otros en general. cifrado Las herramientas de cifrado son un poco más potentes, pero sólo un poco.

Desbloquear: revertir, volcar pe.

compilador nativo de xenocode

La especialidad de xenocode es la protección contra la ofuscación, pero también proporciona la llamada función de código nativo generado. Generar código nativo es en realidad empaquetar el ensamblado y crear un cargador local, pero se hace de una manera que envuelve el marco, lo que significa que el programa empaquetado puede ejecutarse directamente en una máquina sin el marco instalado. Pero el costo es el que genera. un archivo muy grande, ya que contiene una docena de megabytes de fotogramas.

Decapsulación: volcado directo.

Método 2: Analizar el formato de su archivo empaquetado y descomprimirlo directamente (hay herramientas relevantes disponibles).

El modo kernel DNGuard 1.0 es el mismo que maxtocode 3.1x. Lo mismo ocurre con la retirada de la carcasa.

DNGuard 2.0 tiene un kernel de capa Jit, igual que maxtocode 2007 Enterprise y CLIProtector, pero tiene una vulnerabilidad menos que maxtocode 2007 Enterprise y CLIProtector, que no se puede restaurar de forma sencilla.

Si el cracker está muy familiarizado con el funcionamiento del núcleo JIT, también es posible reconstruir el cuerpo del método a partir de la estructura de la capa JIT.

Descifrado: modo de reconstrucción de estructura jit hook.

Resumen:

A excepción de maxtocode 3.x, DNGuard y CLiProtector, todos los demás programas de cifrado de herramientas tienen vulnerabilidades en el archivo de configuración y el código se puede obtener a través del archivo de configuración.

CLiProtector y maxtocode 2007 Enterprise Edition tienen mejor compatibilidad y solidez.

DNGuard 2.0 es un poco más potente, pero tiene poca compatibilidad y solo admite el marco v2.0.50727.42.

Las versiones más recientes de DNGuard han comenzado a adoptar el modo de compatibilidad total del marco.

Los ensamblados cifrados por todas las herramientas anteriores pueden interceptar el código de bytes IL directamente en la capa jit. El código de bytes de IL no es el cuerpo del método, sino parte del cuerpo del método.

El descifrado no se puede lograr simplemente obteniendo el código de bytes IL, pero ya es posible revertirlo en código ensamblador MSIL para análisis algorítmico.

El objetivo de DNGuard HVM es evitar que la capa jit intercepte el código de bytes IL analizable.