Métodos comunes para descifrar el microperro dongle
Este artículo presenta las ideas y métodos generales para descifrar dongles de software. Es posible que se sorprenda de que después de presentar ayer la "Revisión del producto de software dongle", ¿por qué presenta el conocimiento sobre cómo descifrar dongles hoy? De hecho, como desarrollador de software, es importante estudiar bien el cifrado de software, pero también es necesario saber más sobre el descifrado y el descifrado de dongle. El cifrado y el craqueo son como lanzas y escudos. Cuanto más sepa sobre el descifrado, mejor. Cuanto mejor sea el código de cifrado que escribas, mejor debes saber que el cifrado siempre es mucho más fácil que el descifrado. Sólo conociendo a ti mismo y al enemigo podrás salir victorioso de cada batalla. Los bloqueos de cifrado de hardware, comúnmente conocidos como "perros cifrados", se pueden dividir aproximadamente en tres métodos para descifrar dongles, uno es mediante la clonación o copia de hardware, el otro es depurar, rastrear y descifrar mediante herramientas de depuración como SoftICE, y el otro es mediante escritura El interceptor modifica la comunicación entre el software y el dongle.
La clonación y copia de hardware se dirige principalmente a dongles con chips nacionales. Las empresas de dongles nacionales generalmente no tienen la capacidad de fabricación de chips de cifrado centrales, por lo que algunas utilizan chips comunes en el mercado para analizar el circuito del chip y una vez. Una vez escrito el contenido del chip, se puede copiar o clonar inmediatamente un dongle idéntico. Sin embargo, los dongles extranjeros no pueden utilizar este método. El hardware de los dongles extranjeros utiliza chips de desarrollo propio con muy buena seguridad, que suelen ser difíciles de copiar, y ahora los dongles nacionales también utilizan chips de tarjetas inteligentes importados, por lo que este método de descifrado de clones de hardware se está volviendo cada vez más común. cada vez menos útil.
Para la depuración y el craqueo de depuración, a medida que la complejidad del software es cada vez mayor, el código generado por el compilador también aumenta y la complejidad de rastrear el craqueo de depuración mediante el desmontaje y otros métodos se ha vuelto cada vez más compleja. Alto, el costo del craqueo es cada vez mayor. En la actualidad, pocas personas están dispuestas a gastar mucha energía para realizar un craqueo tan complejo, a menos que el software descifrado tenga un valor extremadamente alto.
Actualmente, el trabajo de descifrado y craqueo de bloqueos de cifrado (dongles) se centra principalmente en interceptar las comunicaciones entre aplicaciones y bibliotecas dinámicas cifradas. Este método es económico y fácil de implementar, y tiene un buen efecto de descifrado en bloqueos de cifrado (dongles) con chips como microcontroladores como núcleo.
Dado que la interfaz de programación de aplicaciones (API) del dongle (dongle) es básicamente pública, la API de la interfaz de programación del dongle, el manual del usuario y otros materiales relacionados se pueden descargar fácilmente de Internet. Conozca los últimos avances en tecnología de dongle.
Por ejemplo, para un dongle conocido proporcionado por un conocido proveedor de dongle nacional estadounidense, toda la información de programación se puede obtener de Internet. Después de analizar esta información, sabemos que el cifrado El bloqueo. (dongle) tiene 64 celdas de memoria, 56 de las cuales pueden ser utilizadas por el usuario. Cada una de estas celdas puede usarse como uno de tres tipos: algoritmo, valor de datos y contador.
Los valores de datos son más fáciles de entender. Los valores de datos son datos almacenados por el usuario en una unidad legible y grabable, al igual que los almacenados en un disco duro. El usuario puede usar la función Leer para leer. También puede extraer los datos de la unidad de almacenamiento. Puede utilizar la función Escribir para guardar su propia información en la unidad de almacenamiento.
Un contador es una unidad que los desarrolladores de software pueden usar la función Decrementar en su software para disminuir su valor en uno. Cuando el contador está asociado con un algoritmo activo, el contador será cero. .
La unidad del algoritmo es más difícil de entender. El algoritmo es una tecnología a la que se utiliza la función Query (queryData) para acceder a él, donde queryData es el valor de la consulta. La función anterior tiene un valor de retorno. está cifrado El programa conoce un conjunto de pares de valor de consulta/valor de retorno y, cuando se requiere cifrado, utiliza las funciones anteriores para comprobar la presencia y autenticidad del perro. Para las unidades designadas como algoritmos, el software no puede leerlas ni modificarlas, incluso si usted es un usuario legal. Entiendo que esta tecnología, además de aumentar la complejidad del programa, sirve principalmente para lidiar con grietas utilizando tecnología de simulación.
Todas las llamadas a funciones API de este bloqueo de cifrado (dongle) tendrán un valor de retorno, y un valor de retorno de 0 indica éxito.
Por lo tanto, surgió la idea de crackear, que consiste en utilizar nuestras propias herramientas (como VB, VC, etc.) para reescribir y construir un archivo de biblioteca dinámica DLL que sea el mismo que el API dongle, que también incluye lectura, escritura, etc. Todas las funciones incluidas en la API utilizan los mismos parámetros y valores de retorno que las funciones originales, y todas las funciones devuelven cero. Luego procese las funciones de Consulta y Lectura y devuelva los valores requeridos por el software de la aplicación.
Después de escribir correctamente el nuevo archivo DLL, reemplace directamente el archivo DLL original. En este momento, ejecute el software de la aplicación. Todas las operaciones del software que accedan al dongle serán interceptadas y el programa de interceptación siempre lo hará. devuelve el correcto Los datos se proporcionan al software, realizando así el funcionamiento del dongle simulado.
Las anteriores son algunas ideas comunes para descifrar dongles de software (bloqueos de cifrado). Para este tipo de descifrado, los desarrolladores de software todavía tienen algunas contramedidas correspondientes. La próxima vez lo explicaré en "Programación de bloqueo de cifrado de software". El artículo "Técnicas" detalla cómo los desarrolladores de software pueden escribir código seguro y confiable para hacer que este método de descifrado similar sea ineficaz.