Características Importantes para Ofuscar Código - norman-ipn/Ofuscador GitHub Wiki

Entre los desarrolladores es común tratar de evitar que si código sea tomado, y que se violen sus derechos de autor sobre dicho código, la manera más frecuente de evitarlo es por medio de ofuscar su código, para que sea, no imposible pero si bastante complejo interpretar el código.

Sin embargo, ofuscar no es únicamente alterar el código que se escribió, sino que como buen programador, se hace práctica de la inteligencia, y se hacen jugarretas para confundir aun mas a aquellos que quieran interpretar el código, por medio de incluir: Bucles irrelevantes Cálculos innecesarios Comprobaciones absurdas Nombres de funciones y de variables que no tienen nada que ver con el código principal. Además de incluir: Funciones larguísimas que no sirven para nada Interacciones inverosímiles (absurdo o irracional) entre variables y funciones, etc.

                              ASPECTOS IMPORTANTES PARA OFUSCAR CÓDIGO
  1. Que todos los nombres de funciones y variables carezcan de sentido
  2. Incluir ocasionalmente cálculos y bucles sin sentido
  3. Esconder números pequeños en cadenas de texto
  4. Crear métodos grandes, en vez de utilizar sub-rutinas (en el caso de POO)
  5. Distribuir los métodos entre las subclases (en el caso de POO)

ES IMPORTANTE QUE UN PROGRAMA NO SE OFUSQUE DESDE EL INICIO, SINO QUE SE ESCRIBA COMO NORMALMENTE SE REALIZA (DE MANERA CONVENCIONAL) Y POSTERIORMENTE SE AÑADAN COSAS ABSURDAS AL CÓDIGO.

http://www.iec.csic.es/criptonomicon/java/ofuscacion.html

PASOS QUE REALIZA UNA APLICACIÓN PARA OFUSCAR CÓDIGO DE JAVA Encontré una página que habla sobre un ofuscador para JAVA, se llama GPL ProGuard, sin embargo eso no es lo importante sino hablar de lo que presuntamente realiza dicha aplicación: La herramienta funciona buscando primeramente clases, campos, métodos y atributos no utilizados, los cuáles elimina; pasa entonces a optimizar el bytecode y eliminar instrucciones innecesarias; y, por último, elimina la información de depuración y re-nombra las clases, campos y métodos restantes utilizando nombres cortos y poco legibles. http://mundogeek.net/archivos/2009/06/08/ofuscar-codigo-java/

Algunos otras características:

Reemplaza todos los posibles nombres de los símbolos con los no-significativos, preservando al mismo tiempo la corrección sintáctica y semántica del código fuente. Símbolos predefinidos y los símbolos de las bibliotecas de terceros, el C / C + + utiliza el código de origen se mantienen igual que el código ofuscado seguirá funcionando sin necesidad de confundir esos terceros C / C + + bibliotecas o componentes.

Sustitutos valores numéricos con las expresiones aritméticas usando (al azar o constante para el mismo valor numérico) valores numéricos decimales y hexadecimales que dan como resultado el mismo valor.

Tiras de comentarios u observaciones reformatea.

Elimina sangría y espacios en blanco.

Vuelva envuelve todos los bloques de código.

Atascar tanto código en cada línea como sea posible.

Identificador de codificación no tiene impacto en la funcionalidad o el rendimiento de ejecución.

Ningún cambio en la compilación C o los procedimientos de ejecución o el medio ambiente se hacen.

Lista predefinida de nombres reservados para las bibliotecas estándar de C se proporcionan.

Puede conservar la mayoría de los condicionales del preprocesador y las llamadas de macro en la fuente ofuscado.

El código fuente puede ser perfectamente formateados para ayudar al desarrollo antes de ofuscación.

La salida está codificado en ASCII, ASCII Europea, o UNICODE.

Apoya los proyectos con los archivos que las directivas de uso pesado arbitrariamente preprocesador y macros, que abarcan varios directorios, mezcla de C y C + + lenguajes que usan cualquier dialecto de C / C + +.

Mantiene la fuente de archivos de biblioteca de código se utiliza en la no-ofuscado (original) forma.

Hace un análisis de los cambios entre versiones diferentes del producto ofuscado más difícil.

Los nombres de las macros y sus definiciones también se ofusca.

Incluye varios motores de ofuscación configurables para nombres de símbolos, cadenas y enteros.

Generar e insertar código basura / basura instrucción en el archivo de código fuente aleatoria mente.

Soporta múltiples mayúsculas y minúsculas y mayúsculas y minúsculas tablas de excepción, especificado por el usuario mapeo de símbolos.