Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Cómo mantener el código fuente en secreto para evitar la ingeniería inversa utilizando el lenguaje Python?

¿Cómo mantener el código fuente en secreto para evitar la ingeniería inversa utilizando el lenguaje Python?

¡Todos están ocupados, quién tiene tiempo para mirar tu código de mierda!

Si realmente tienes miedo a las fugas, no utilices Python.

He hecho esto antes. Las regulaciones en ese momento eran mucho más estrictas. Los servicios que deben empaquetarse e implementarse para el cliente solo pueden ser válidos dentro del período de validez. su certificado.

El código Python no se puede mantener en secreto de ninguna manera, así que considere usar una herramienta llamada "nuitka" que asigna su código fuente Python a C y lo compila en código binario para que la otra parte no pueda obtenerlo. su código fuente.

El costo de esto es que nuitka no es perfecto, tiene algunas limitaciones y no puede convertir todo el código Python 100 perfectamente.

1. Utilice Cython para compilar Python en un archivo pyd en Windows o en un archivo so en Linux. El archivo binario es relativamente seguro.

2. Utilice el ofuscador de código fuente para que el código sea largo y maloliente. El código ofuscado se puede compilar en binarios usando Cython. Este tipo de descompilación estática no es demasiado difícil.

3. Al igual que otros programas de lenguaje, el estado de depuración se puede detectar y el programa puede salir cuando está en el estado de depuración o ingresar un código confuso que consume la mente del ingeniero inverso.

4. Comparta un método antidepuración multiplataforma para detectar el tiempo de ejecución de la función. Agregar puntos de interrupción hará que el tiempo de ejecución de la función se extienda y también se considerará depuración.

Python aboga por el código abierto. Dado que ha elegido Python, es mejor adoptar el código abierto y también se preocupa por la ingeniería inversa.

No existe ningún software que no se pueda revertir.

Siempre que se pase el lenguaje ensamblador, la ingeniería inversa es posible, no tengo otras ideas.

Lo único que puedes hacer es evitar que otros lean el código fuente de Python. Esto es relativamente fácil de implementar.

Python es adecuado para desarrollar programas de servidor o programas para su propia investigación científica. Si se utiliza como programa de usuario y se instala en una PC o teléfono móvil, es más adecuado otro C o Java.

1) Las partes que deben protegerse se pueden implementar en lenguaje C y compilarse en archivos como este. De esta manera, el costo de la reversión será mayor y puede evitar abrir directamente el archivo Python para ver la lógica del código. .

2) Por lo tanto, es posible desensamblar el archivo a través de herramientas como ida. Puede usar ofuscación de código en lenguaje C, instrucciones florales y otras operaciones para aumentar la dificultad del análisis a través de herramientas de desensamblaje como ida.

3) No existe una herramienta técnica absolutamente irreversible. Depende de las necesidades específicas elegir una herramienta técnica anti-descompilación específica.

Existen herramientas como py2exe que pueden convertir un programa ejecutable en un código fuente oculto. Aunque el código de bytes aún se puede descompilar, es mucho más difícil

1. El más estable. eres tú Se ha cambiado el proceso de carga del código cpython y la lectura del paquete zip es la más estable.

2. Utilice algunas herramientas de cifrado para ofuscar un poco antes de compilar pyc, lo que puede evitar que caballeros y villanos.

El primer método se utiliza generalmente con fines comerciales y el segundo método se utiliza con fines de pequeñas empresas.

Puede considerar usar la herramienta pymod, usar el paquete pymod para cifrar y empaquetar el módulo, y publicar el módulo como un solo archivo.

Echemos un vistazo rápido al proceso de lanzamiento de un proyecto, que solo tiene unos pocos archivos:

entrada del programa del proyecto main.py

setting.py configuración del proyecto

módulo de proyecto de aplicaciones

directorio de complementos del proyecto plusins

Crear proyecto pymod crear demo1

cd demo1

Crear módulo pymod agregar mod1

Iniciar pycharm y comenzar a escribir módulos de funciones

Un módulo consta de tres archivos de forma predeterminada

__init__.py, handlers.py, param_schemas.py

La lógica empresarial está escrita principalmente en handlers.py

__init__.py

de pymod.blueprint import Blueprint api = Blueprint( "/mod1") de .handlers import *

param_schemas.py

esquema_sfz = { "type": "object", "required": ["sfz", "nl" ], "properties": { " sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "Número de identificación"}, "nl": { "type" : "entero", "mínimo": 00, "máximo": 150150, "descripción": "edad" }}}

handlers.py

de .import api de pymod .ext importar RequestHandler, params_validate, TrueResponse, FalseResponse de .param_schemas importar esquema_sfz de pymod.plugins importar sfz_check @api.add_route('/hola') clase Hola(RequestHandler): def get(self): self.write('Hola mundo ') @params_validate( esquema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl = self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check .check_sfzmhm(sfz): self.write(TrueResponse(hint="verificación del número de identificación aprobada") else: self.write(FalseResponse(hint="verificación del número de identificación aprobada")write(FalseResponse(hint="verificación del número de identificación fallida) "))

Tercero, implementación del proyecto

Modificar settings.py para la depuración del programa

# En el modo de desarrollo, el nombre del módulo que se ejecutará debe ser completado

módulos = ["mod1"] módulos_config ={ "mod1

": { "deny_ip": "", "allow_ip": "*" }}

Inicie el programa python main.py

La depuración se completa y entra en modo de lanzamiento

En el directorio del proyecto

pymod pack mod1

Genere el archivo mod1.mod en el directorio de destino y cópielo en el directorio de la aplicación

Modificar settings .py

# En modo de desarrollo, se debe completar el nombre del módulo a ejecutar

module = []

Ejecute python main.py nuevamente para probar

p>

Todo está bien, el sistema está listo para su lanzamiento.

Aquellos que dicen que no se pueden guardar secretos no han estudiado el mecanismo de Python. Hice un proyecto donde todo el código fuente está personalizado y descifrado en tiempo de ejecución

.

ngji.js">