¡Nada! ¡Es imposible! Un hacker determinado siempre encontrará una forma de evitarlo. Pero eso no significa que debas dejar la puerta abierta para que él entre a la fiesta. Los métodos que he enumerado asegurarán que le hagas pasar un mal rato al pirata informático / pirata y algunas noches sin dormir.
Poner código importante en un servidor
Puede confiar en llamadas a procedimientos remotos a un servidor bien protegido. Esto reduce la posibilidad de que sus códigos sean robados, ya que el código siempre permanecerá en el servidor y no se podrá ver nada más que los resultados. Sin embargo, esto tiene un inconveniente, si su aplicación va a ser utilizada por muchos usuarios (millones), necesitará tener una gran granja de servidores.
- Cómo desarrollar aplicaciones como Myntra
- ¿Cómo pueden dos aplicaciones de Android compartir la misma ID de usuario y VM de Linux?
- ¿Cuáles son algunas buenas maneras para la construcción condicional de proyectos de Android?
- ¿Es posible desarrollar aplicaciones de Android sin conocer Java?
- ¿Existe un mercado similar a WordPress para aplicaciones de Android donde puede comprar una aplicación y personalizarla?
Si una gran granja de servidores es algo que no puede permitirse, aún puede mantener el código en los servidores que no desea sacar. Mantenga siempre el código en un hardware que controle. Recuerde, la protección segura de un servidor es fácil de forma electrónica y física.
Use ProGuard
Es una herramienta de ofuscación que ayuda a proteger las aplicaciones que utilizan un servidor con licencia. Aumenta la dificultad de “revertir” su código. DexGuard, una versión comercial de Proguard, hace un esfuerzo adicional y ayuda un poco más. Pero su código siempre se puede convertir en samli, que los desarrolladores pueden usar para aprender qué hacer con él. Nuevamente, si no desea que otros vean su código, no lo almacene en su dispositivo.
Técnicas de detección de depurador
Puede leer acerca de estas técnicas de detección de depurador para asegurarse de que su protección sea lo suficientemente difícil de romper. Diríjase a la base de datos de Técnicas de ingeniería inversa de OpenRCE.
Escribir partes importantes de código en C / C ++
También puede escribir las partes importantes de su código en C / C ++ y agregarlas como una biblioteca compilada. Si bien se puede desmontar en código de ensamblaje, la ingeniería inversa de una gran biblioteca desde el ensamblaje consume mucho tiempo. Java es más fácil de descompilar en comparación con C / C ++ .
Escribir archivos de forma nativa en archivos .so
Con NDK puede escribir los archivos de forma nativa en archivos .so, que tienen muchas menos probabilidades de descompilarse que los APK. Hay algunos buenos descompiladores disponibles, pero eso requeriría que el atacante sea competente en arquitectura de procesador ARM, lenguaje ensamblador, convenciones JNI y compilador ABI. Le estás dando al atacante competente algunas noches sin dormir.
Ofuscar valores al almacenarlos en dispositivos móviles
Almacénelos en forma de algún algoritmo, es decir, 50 puntos de recompensa en su aplicación podrían ser (x * (x ^ 2 + 1 – Factor de neutralización)) / (x + 1). Sin embargo, debe optimizar su algoritmo para que no termine comprometiéndose al redondear los valores.
Fuente: evita la ingeniería inversa de tu aplicación de Android