La ofuscación no transforma los datos, hace que los datos sean difíciles de interpretar.
Si estoy escribiendo malware y quiero dificultar que los analistas entiendan el flujo de la lógica, en lugar de usar una función llamada print
, uso una cadena aleatoria para nombrar esa función. "Imprimir" no se ha transformado en una cadena aleatoria, la función se llama simplemente esa cadena aleatoria. No hay nada para "revertir" la cadena aleatoria a.
Cuando ejecuta un ofuscador de código, toma las variables y funciones de los nombres, les asigna un valor clave (piense: variable1
, function1
, etc.), luego reemplaza esos nombres con una cadena aleatoria (ya veces la la cadena aleatoria se confunde a través de una función de cambio de nombre incrustada en el código). Esto no es cifrado o hashing. Este es un cambio de nombre completo con cadenas aleatorias. Sí, también podría usar el cifrado como una función de cambio de nombre, pero ¿por qué tomar ese golpe computacional? Al final, las variables y los nombres de las funciones deben ser consistentes en el flujo lógico en tiempo de ejecución.