Las medidas de prevención de ingeniería inversa son solo ofuscación. Pueden ralentizar el proceso, pero no lo impedirán. La mayoría de estas soluciones simplemente cambian el nombre de las variables / llamadas a funciones o agregan un código adicional para tratar de confundir las cosas.
Solo hay un puñado de productos de ofuscación en el mercado. La mayoría de estos productos utilizan las mismas técnicas básicas. Con una pequeña secuencia de comandos de Python, generalmente puede tomar huellas digitales / identificar el producto utilizado e incluso eliminar una gran cantidad de código basura. Te quedan algunas llamadas de funciones y variables con nombres extraños o llamadas de bucle adicionales que no sirven para nada. Una vez más, con un poco de magia de Python, puede examinar los parámetros en las llamadas a funciones / tipos de datos variables y adivinar el nombre / propósito real. Una vez que pasa por el código por un tiempo, puede descubrir el resto
El problema es que en algún momento el código ejecutable debe ser legible por el hardware para poder ejecutar el código. Con experiencia, el ensamblaje no es realmente tan difícil de entender.
- ¿Cuál es la mejor manera de globalizar su sitio web en 2016?
- Quiero hacer un sitio web como http://onlineocr.net, pero no sé cómo. ¿Cómo puedo hacer un sitio web como este?
- ¿Qué sitios web son similares a la tienda PLR?
- ¿Puedo crear un sitio web y comprar el nombre de dominio más tarde?
- ¿Dónde está el mejor lugar para promocionar su sitio web?
Lo mejor que puede hacer de manera realista es configurar una defensa en capas:
- Código de acceso: comprime el ejecutable en un formato cifrado. Esto no ahorrará espacio, pero limitará el acceso al ejecutable y evitará problemas de seguridad del navegador al acceder.
- Proteja la información confidencial: la información confidencial (claves, nombres de servidores, configuraciones) no debe almacenarse en el texto del plan dentro del archivo ejecutable. Cifre estos valores con una clave / alg fuerte y haga que el usuario lo ingrese como parámetro en el momento de la ejecución. (Cifrado de bloque AES con clave de 1048 bits o superior)
- Comunicación: cifre la comunicación externa con un cifrado asimétrico fuerte. Exponer la clave pública en el código es de poco riesgo.
- Proteja IP / cálculos confidenciales: algunos IP son demasiado sensibles para codificar en una aplicación distribuida. Codifique esto en un servicio externo y solo haga que la aplicación gestione el envío / recepción de información.