Red de conocimiento informático - Conocimiento informático - ¿Cómo evitar que se descompile una DLL escrita en C?

¿Cómo evitar que se descompile una DLL escrita en C?

Respuesta simple:

1. En teoría, no hay garantía de que el programa no se descompile.

2. Se pueden utilizar algunos empaquetadores para aumentar la dificultad de la descompilación, lo que obliga al operador a descifrar el empaquetador antes de descompilar, pero al mismo tiempo reducirá la eficiencia del programa.

3. En lo que respecta a las condiciones técnicas actuales, en términos generales, el "código fuente" descompilado no se puede utilizar para estudiar o consultar el código fuente. En la mayoría de los casos, solo se puede utilizar para. Análisis, utilizado principalmente para craqueo o modificaciones de clase a pequeña escala.

4. Algún software de shell simple: ASPACK, UPX, PECompact, etc. Si quieres probarlo, búscalo y descárgalo tú mismo. Algunos programas antivirus también pueden considerar el software empaquetado como malware.

5. Esta es también la razón por la que muchos sistemas con altos requisitos de seguridad adoptan una "arquitectura de tres niveles" (similar al acceso a páginas web/sitios web). Porque en la arquitectura de tres niveles, los usuarios no pueden acceder directamente al software y a los datos principales.

************, el siguiente es conocimiento relevante, si tienes paciencia, puedes echar un vistazo a ***********

一. Sobre descompilación y craqueo.

1. En lo que a la tecnología actual se refiere, teóricamente todos los programas tienen posibilidad de ser descompilados.

2. Sin embargo, el código descompilado no es necesariamente comprensible para personas altamente técnicas, porque más del 80% del "código fuente" descompilado es diferente del código original escrito por el autor. Esto se debe a que el principio de descompilación se basa en el código de máquina (o código intermedio), lo que permite a la computadora generar un lenguaje de alto nivel a la inversa, en lugar de encontrar el código original del escritor. El código descompilado es generalmente pobre en términos de inteligibilidad y legibilidad.

3. Sin embargo, esto no significa que el "código fuente" descompilado no tenga valor. Para los expertos, al analizar ciertos fragmentos específicos del código descompilado, se pueden descifrar los puntos clave del programa. del programa, contraseñas, fuentes de datos, etc. Porque es más fácil destruir que construir, y es mucho más fácil analizar el área local que planificar la situación general.

4. Si considera que los códigos clave se procesarán especialmente durante la descompilación, puede aumentar la dificultad, por ejemplo, convertir una cadena específica en varias cadenas y almacenarlas en el programa, o el uso de almacenamiento cifrado. tiempo durante la síntesis/generación, borrado instantáneo de la memoria cuando no está en uso, etc...

5. La ubicación de las partes clave de la descompilación a menudo se basa en cadenas. Por ejemplo, cuando el usuario no se ha registrado, aparece una línea de cuadros de diálogo que le dice "Regístrese antes de usar". el cracker rastreará dónde está la cadena durante la descompilación, luego verificará las variables y direcciones correspondientes a la cadena, y luego rastreará Luego, el cracker rastreará las variables y direcciones correspondientes a la cadena después de la descompilación, y luego rastreará las llamadas a esta. variable o código de dirección, luego expanda para descubrir en qué circunstancias se llama el "código que llama a esta variable o dirección" y finalmente configure la instrucción skip. Este es el método más típico para descifrar el registro. Después de descifrar, compile el "código fuente" modificado o modifique directamente el código correspondiente en el programa según el "código fuente". OK, la versión descifrada se completa oficialmente.

2. Sobre la concha.

1. En teoría, son todos iguales, no hay caparazón que no se pueda romper.

2. Sin embargo, algunos programas de empaquetado utilizan algunos métodos especiales, lo que hace que sea muy difícil descifrar el shell. Es difícil para los amigos sin las habilidades suficientes comenzar, como dividir y mutar el código del programa original. , implantar autoverificación y otras tecnologías.

3. Pero el software del armazón es el mismo programa y tiene la posibilidad de realizar ingeniería inversa. Además, el armazón se puede comparar con agregar una caja fuerte fuera de la caja de madera. Pero no creas que una caja fuerte es necesariamente segura. Frente a diversas técnicas de desbloqueo y violencia, no importa cuán fuerte sea la caja fuerte, solo aumentará la dificultad.

4. Cuanto más complejo sea el shell, menor será la eficiencia de la operación del programa. Esto es inevitable, porque los programas que originalmente solo se centraban en tareas específicas ahora deben tener cuidado de no ser extraídos y monitoreados.