He estado estudiando materiales relacionados con DotNet recientemente y sscli es realmente algo bueno: P.
Mientras estudiaba, sinteticé el conocimiento e hice esta pequeña herramienta.
El principio de protección es similar al de los chinos remotesoft y maxtocode. El programa cifrado también debe ir acompañado de una biblioteca de ejecución cuando se lance.
Sin embargo, a diferencia de esos dos, la biblioteca de tiempo de ejecución incluida no es una dll nativa pura, sino un ensamblaje híbrido C++/CLI.
La herramienta ha tomado forma y se ha completado el marco general del núcleo. Se utiliza para cifrar una muestra y se ejecuta normalmente.
Algunos aspectos incluso superan a maxtocode.
1. No depende de los programas ildasm e ilasm de Microsoft.
Tanto el desmontaje como el ensamblaje de IL se implementan mediante programación.
Los ensamblados que contienen código nativo se pueden cifrar.
2. Herramienta antidescompilación, el ensamblaje cifrado maxtocode no se puede ver directamente con reflector, pero después de ejecutar el programa, use pedumper y, después de volcarlo, puede usar reflectotr para ver la estructura. Por supuesto, aún no puede ver el código.
El ensamblaje cifrado por dnguard es mejor de lo que esperaba. El ensamblaje cifrado no se puede ver con el reflector y el ensamblaje volcado no se puede ver con el complemento del reflector.
Siento que reflector todavía es un poco débil. Software similar, Disa# y Xenocode fox, pueden abrir y ver directamente ensamblajes cifrados maxtocode y dnguard.
Con este fin, intenté agregar ofuscación estructural al ensamblaje cifrado dnguard. Tuvo el efecto de que al ver la estructura en Disa# y fox, habrá cierta confusión, es decir, se pueden mostrar funciones de clase A. en la clase B. El efecto no es muy bueno, solo hay unas pocas funciones en cada clase que causarán problemas.
3. Las nuevas funciones de Anti .Net 2.0 no son muy sólidas. La solidez es similar a la de maxtocode 3.13 (versión interna). Escuché que maxtocode lanzó 3.14. en la respuesta en el blog de Jason, parece ser lo mismo que 3.13). Max 3.12 se puede usar parcheando solo unos pocos bytes, y la reflexión se puede usar 3.13 no es muy diferente, y la cantidad de bytes necesarios para parchear es incluso menor que la de 3.12.
Ahora existe una mejor solución a este respecto, que puede aumentar considerablemente la intensidad sin afectar la eficiencia. Pero no puede evitar completamente los vertederos.
También existe una solución antidumping relativamente perfecta, que debe implementarse junto con otra tecnología de protección.
No planeamos discutir este aspecto en profundidad. Una vez completado el shell de cifrado DNGuard, comenzaremos con otra tecnología de protección y finalmente combinaremos las dos protecciones.
4. Utilice ildasm e ilasm para restaurar el ensamblaje después del antivolcado. Además de las nuevas características anti-volcado de anti .net 2.0, DNGuard también agrega anti, un volcado que hice en los primeros días. Además, la función de ensamblaje híbrido C++/CLI también se utiliza para evitar el ildasm después del volcado. Sin embargo, esto no es muy fuerte y el ensamblaje pequeño se puede reparar fácilmente para implementar el ensamblaje IL.
Todavía queda mucho trabajo por hacer. El algoritmo de cifrado aún no se ha elaborado y la protección de la biblioteca en tiempo de ejecución aún no se ha realizado. Descubrí que puedes encontrar herramientas de protección listas para usar para DLL puramente nativas, como thmida, que es muy buena. La biblioteca en tiempo de ejecución de maxtocode usa este shell, pero nunca he podido encontrar un buen método para DLL de C++/CLI. . Parece que solo podemos agregar manualmente una capa de protección y ya hemos comenzado a probarla. Ahora vamos a agregar un shell de cifrado simple. Una vez completado esto, le colocaremos una demostración de DNGuard.
Después de que DNGuard cifre el ensamblaje, use el reflector para ver:
Utilice el reflector para ver el volcado de ensamblaje cifrado de DNGuard:
El ensamblaje cifrado por Maxtocode se ve con Reflector:
Después de volcar el ensamblaje cifrado de Maxtocode, visualícelo con Reflector: