Con el software, ingeniería inversa funciona (incluso hay un sitio dedicado StackExchange para preguntas de ingeniería inversa). La extracción de secretos de binarios compilados se ha hecho y se ha vuelto a hacer y se ha vuelto a hacer desde los días de los primeros juegos "protegidos contra copia" para computadoras personales, en la década de 1980. La conclusión es que realmente no puede ocultar un valor secreto en una aplicación.
Lo que puedes hacer es ocultar un secreto específico del cliente en la aplicación. Esto es similar a dar a cada cliente su propia contraseña de inicio de sesión, excepto que el cliente humano no la ve (está oculto en la aplicación). Esto no evitará la ingeniería inversa, pero puede ayudar a mitigar las consecuencias: si un determinado "secreto de aplicación" parece estar filtrando demasiado (por ejemplo, cientos de clientes diferentes lo usan), entonces puede invalide ese secreto en el servidor, sin afectar al resto de su base de usuarios. (Supongo que aquí su clave privada, que se oculta en la aplicación, se usa para hablar con un servidor que usted controla).
Esto es de alguna manera equivalente al Blu-Ray modelo de seguridad: cada jugador (físico) tiene un reproductor. clave específica, y los distribuidores de contenido pueden generar claves de lista negra que se sabe que se han filtrado a través de ingeniería inversa (la lista negra real utiliza un sistema ingenioso denominado difusión cifrado porque necesita funcionar incluso sin una red; pero un teléfono con Windows es un teléfono , por lo que se presume que puede conectarse a la red).